Mysql String Split: Zeilen mit durch Kommas getrennten Werten erweitern
In dieser Frage sucht der Benutzer nach einer Lösung zum Konvertieren einer Tabelle, die einen solchen enthält Zeichenfolgenspalte mit durch Kommas getrennten Werten in eine neue Tabelle mit mehreren Zeilen, wobei die Werte durch Kommas aufgeteilt werden. Auch wenn die Frage angeblich kein exaktes Duplikat eines vorhandenen Threads ist, weist sie dennoch Ähnlichkeiten auf.
Um dieser Anforderung gerecht zu werden, kann eine gespeicherte Prozedur verwendet werden:
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 ;
Diese gespeicherte Prozedur wird initialisiert eine ganzzahlige Variable i. Es durchläuft jeden Zeichenfolgenwert in der Spalte „col2“ und verwendet dabei die Funktion „strSplit“, um die entsprechende Teilzeichenfolge an Position i zu extrahieren. Die extrahierte Teilzeichenfolge stellt einen der durch Kommas getrennten Werte dar.
Die Prozedur wird fortgesetzt und i für jede Iteration erhöht, bis keine Nicht-Null-Teilzeichenfolgen mehr vorhanden sind. Dadurch wird sichergestellt, dass alle durch Kommas getrennten Werte aufgeteilt und in die neue Tabelle eingefügt werden.
Zusammenfassend stellt diese gespeicherte Prozedur eine robuste Lösung zum Konvertieren einer Tabelle mit durch Kommas getrennten Werten in eine Tabelle mit mehreren Zeilen dar es einfacher, die Daten zu manipulieren und zu analysieren.
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Werte in einer MySQL-String-Spalte in mehrere Zeilen aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!