2009-06-25 10 views
1

Ich benutze mysql. in einem Feld, ich habe Daten wie Zeichenfolge1 eingefügt :: Zeichenfolge2 zwei String concated von :: jetzt ich nur zweite Saite holen wollen, könnte jede Stelle für diese helfen mir, Vielen Dank im VorausString Manipulation in MySql

+0

können Sie mehr Details geben? Welche Abfrage möchten Sie –

Antwort

2
SELECT SUBSTRING_INDEX('string1::string2', '::', -1) 
+0

+1 Oh, cool. Ich wusste nichts von diesem kleinen Juwel. – Sampson

+0

Danke Kumpel, es funktioniert wirklich .. vielen Dank – Avinash

3

Sie erkennen, dass Das ist eine schreckliche Idee? Relationale Datenbanksysteme haben Spalten aus einem Grund. Dadurch arbeiten Sie gegen das System; Dies ist ein bekanntes Antipattern. Sie sollten wirklich versuchen, separate Spalten für separate Werte zu verwenden.

Das heißt, Sie können die String-Manipulationsfunktionen von MySQL verwenden, um die Werte abzurufen.

Dies ist eine Übersicht von String-Funktionen von MySQL: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Es gibt einen Kommentar auf der Seite oben erklärt, wie man mit ihnen zu arbeiten. Oder Sie können SUBSTRING_INDEX() als explained in the other answers verwenden.

+0

Es scheint, dass MySQL eine Funktion hat, um genau dies zu erreichen. Ich werde nicht für eine Minute so tun, als ob ich das schon von Anfang an gewusst hätte, aber SUBSTRING_INDEX() erreicht dieses Ding offenbar ziemlich leicht. – Sampson

+0

Ups, du hast recht, ich wusste das nicht. Bearbeitete Antwort. – sleske

+0

Von hier aus über 'CONCAT()' herausgefunden, was getan hat, was ich machen wollte. Danke für den Link, @sleske! – icedwater

0

Wie bereits erwähnt, ist dies ein schreckliches Design. Sie sollten mehrere Spalten für mehrere Daten verwenden. Abgesehen davon können Sie Platzhalter verwenden, um den Wert zu finden. Sagen Sie zum Beispiel Sie suchen 09.08.2009 :: 09.09.2009,

SELECT SUBSTRING('date',-10) 
FROM myTable 
WHERE id = 1; 

, die die letzten 10 Zeichen Ihrer Datum zurückkehren würde. Auch dies ist keineswegs eine "gute" Lösung. Eine gute Lösung wäre, die Datenbank selbst zu reparieren.