MySQL-String-Extraktion aus durch Kommas getrennten Werten
In MySQL ist es oft notwendig, einzelne Werte aus einem String zu extrahieren, der mehrere Werte enthält durch Kommas getrennt. Dies stellt eine Herausforderung dar, da MySQL nativ keine String-Split-Funktion bereitstellt.
Um dieses Problem zu beheben, können wir eine gespeicherte Prozedur nutzen, um Werte iterativ zu extrahieren. So geht's:
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 ;
Beispieldaten:
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
Ergebnis:
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
Verwendung:
Um diese Lösung zu verwenden, erstellen Sie eine Tabelle mit dem Namen BadTable mit den Originaldaten und eine neue Tabelle namens GoodTable zum Speichern der extrahierten Werte. Führen Sie dann die folgenden Befehle aus:
CALL BadTableToGoodTable(); SELECT * FROM GoodTable;
Das obige ist der detaillierte Inhalt vonWie extrahiere ich Werte aus durch Kommas getrennten Zeichenfolgen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!