Heim > Datenbank > MySQL-Tutorial > Wie teile ich durch Kommas getrennte Werte in mehrere Zeilen in SQL auf?

Wie teile ich durch Kommas getrennte Werte in mehrere Zeilen in SQL auf?

Patricia Arquette
Freigeben: 2025-01-24 04:08:09
Original
981 Leute haben es durchsucht

How to Split Comma-Separated Values into Multiple Rows in SQL?

Aufteilen von Werten in mehrere Zeilen in SQL

Eine häufige Aufgabe bei der Datenverarbeitung besteht darin, eine durch Kommas getrennte Zeichenfolge in mehrere Zeilen aufzuteilen, z am Beispiel des Folgenden Anfrage:

Problem:

Bei einer gegebenen Tabelle mit einer ID-Spalte und einer Namensspalte mit durch Kommas getrennten Werten werden die Daten im folgenden Format zurückgegeben:

id name
1 a
1 b
1 c
2 b

Lösung:

Um dies zu erreichen, können wir MySQL nutzen SUBSTRING_INDEX-Funktion in Verbindung mit einer Zahlentabelle, die eine Zahlenfolge bis zur maximalen Anzahl zu teilender Felder enthält. Die folgende Abfrage veranschaulicht diesen Ansatz:

SELECT
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) AS name
FROM
  numbers INNER JOIN tablename
  ON CHAR_LENGTH(tablename.name) - CHAR_LENGTH(REPLACE(tablename.name, ',', '')) >= numbers.n - 1
ORDER BY
  id, n
Nach dem Login kopieren

Wenn das Erstellen einer Zahlentabelle nicht möglich ist, können wir die folgende Abfrage verwenden, um die Zahlenfolge innerhalb der Abfrage selbst zu generieren:

SELECT
  tablename.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) AS name
FROM
  (
    SELECT 1 AS n UNION ALL
    SELECT 2 UNION ALL SELECT 3 UNION ALL
    SELECT 4 UNION ALL SELECT 5
  ) AS numbers INNER JOIN tablename
  ON CHAR_LENGTH(tablename.name) - CHAR_LENGTH(REPLACE(tablename.name, ',', '')) >= numbers.n - 1
ORDER BY
  id, n
Nach dem Login kopieren

Demo:

[SQL Fiddle Demo](https://www.sqlfiddle.com/#!5/cf4386/1)

Das obige ist der detaillierte Inhalt vonWie teile ich durch Kommas getrennte Werte in mehrere Zeilen in SQL auf?. 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