Heim >Datenbank >MySQL-Tutorial >Wie teile ich durch Kommas getrennte Werte in einer MySQL-Spalte in separate Zeilen auf?
Mysql String Split
Problem:
Sie haben eine Tabelle mit einer Spalte, die Komma enthält -getrennte Werte. Sie möchten diese Werte in separate Zeilen aufteilen, wobei jeder Wert einer Zeile entspricht.
Zum Beispiel anhand der Tabelle:
Col1 | col2 |
---|---|
1 | a,b,c |
2 | d,e |
Sie möchten die folgenden Zeilen extrahieren:
Col1 | col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
Lösung:
Dies kann mithilfe einer gespeicherten MySQL-Prozedur erreicht werden. Das folgende SQL-Skript enthält sowohl die gespeicherte Prozedur als auch die von ihr verwendete Funktion:
DELIMITER $$ CREATE FUNCTION strSplit(x VARCHAR(65000), delim VARCHAR(12), pos INTEGER) RETURNS VARCHAR(65000) BEGIN DECLARE output VARCHAR(65000); SET output = REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos) , LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1) , delim , ''); IF output = '' THEN SET output = null; END IF; RETURN output; END $$ CREATE PROCEDURE BadTableToGoodTable() BEGIN DECLARE i INTEGER; SET i = 1; REPEAT INSERT INTO GoodTable (col1, col2) SELECT col1, strSplit(col2, ',', i) FROM BadTable WHERE strSplit(col2, ',', i) IS NOT NULL; SET i = i + 1; UNTIL ROW_COUNT() = 0 END REPEAT; END $$ DELIMITER ;
Um diese gespeicherte Prozedur zu verwenden, können Sie die folgende Abfrage ausführen:
CALL BadTableToGoodTable();
Dadurch wird eine erstellt neue Tabelle namens „GoodTable“ mit den gewünschten Daten.
Das obige ist der detaillierte Inhalt vonWie teile ich durch Kommas getrennte Werte in einer MySQL-Spalte in separate Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!