2013-07-02 18 views
7

i mit dieser Art von Daten, die eine MySQL-TabelleAbfrage alle Zeichen nach dem letzten Komma in Zeichenfolge entfernen

TACOMA, Washington, 98477 

Jetzt habe ich haben Tausende solcher Reihen. Ich möchte, dass die Daten in einer solchen Art und Weise manipuliert werden, dass es wie angezeigt:

TACOMA, Washington 

Ist es möglich, obwohl mysql oder muss ich es manuell zu tun haben.

Antwort

17

Sie verwenden können:

SELECT SUBSTRING_INDEX('TACOMA, Washington, 98477', ',', 2) 

Sie können mehr here lesen.

Und die Update-Anweisung:

UPDATE my_table 
    SET my_col = SUBSTRING_INDEX(my_col, ',', 2) 

Wo Sie brauchen my_table mit Ihrem Tabellennamen zu ersetzen und my_col mit der Spalte, die Sie aktualisiert werden müssen.

+0

und wie mache ich ein Update für die gleiche Spalte mit neuen Ergebnissen in dieser Abfrage? – beNerd

+0

@beNerd ich habe es geschrieben – Stephan

+0

Wofür ist die 2? –

5
substring_index(col, ',',-1) 

wird die Zeichenfolge aus dem letzten Index des Kommas geben Schnur zu beenden

replace(col,concat(',',substring_index(col, ',',-1)),'') 
+0

Sie sind Abfrage '98477' zurückgibt. –

+0

ja und entfernen Sie das wieder – chetan

6

Möglicherweise so. Zählen Sie die Anzahl der Kommas (durch Überprüfen der Länge gegenüber der Länge mit allen entfernt Kommas) und dann SUBSTRING_INDEX verwenden, um die Zeichenfolge bis zu der Anzahl von Kommas zu erhalten: -

SELECT SUBSTRING_INDEX(col, ',', LENGTH(col) - LENGTH(REPLACE(col, ',', ''))) 
FROM SomeTable 
+0

+1 für die dynamisch Berechnung der Kommazahl – Stephan

Verwandte Themen