Heim > Datenbank > MySQL-Tutorial > Wie teile ich durch Kommas getrennte Werte in einer MySQL-Spalte in separate Zeilen auf?

Wie teile ich durch Kommas getrennte Werte in einer MySQL-Spalte in separate Zeilen auf?

Mary-Kate Olsen
Freigeben: 2024-11-28 07:32:11
Original
731 Leute haben es durchsucht

How to Split Comma-Separated Values in a MySQL Column into Separate Rows?

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 ;
Nach dem Login kopieren

Um diese gespeicherte Prozedur zu verwenden, können Sie die folgende Abfrage ausführen:

CALL BadTableToGoodTable();
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage