Heim > Datenbank > MySQL-Tutorial > Wie extrahiere ich Werte aus durch Kommas getrennten Zeichenfolgen in MySQL?

Wie extrahiere ich Werte aus durch Kommas getrennten Zeichenfolgen in MySQL?

Mary-Kate Olsen
Freigeben: 2024-11-30 14:01:11
Original
738 Leute haben es durchsucht

How to Extract Values from Comma-Separated Strings in MySQL?

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

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

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!

Quelle:php.cn
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