Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQLs GROUP_CONCAT umkehren, um verkettete Daten zu trennen?

Wie kann ich MySQLs GROUP_CONCAT umkehren, um verkettete Daten zu trennen?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 08:33:18793Durchsuche

How Can I Reverse MySQL's GROUP_CONCAT to Separate Concatenated Data?

Umkehren der Auswirkungen von GROUP_CONCAT: Aufteilen verketteter Daten

In MySQL kombiniert die Funktion GROUP_CONCAT mehrere Werte aus einer bestimmten Spalte in einer einzigen, Durch Kommas getrennte Zeichenfolge. Es kann jedoch Fälle geben, in denen Sie den gegenteiligen Effekt wünschen, bei dem eine verkettete Zeichenfolge wieder in ihre einzelnen Komponenten zerlegt wird.

Die Abfrage zum Erreichen der Aufteilung

Um dies zu erreichen, verwenden Sie die folgende Abfrage:

SELECT
  id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color
FROM
  colors
  INNER JOIN
  (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n
  ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit
ORDER BY
  id,
  n.digit

Understanding the Details

  • SUBSTRING_INDEX-Funktion: Diese Funktion extrahiert den n-ten Teilstring aus einem String, beginnend beim ersten Vorkommen eines angegebenen Trennzeichens. In dieser Abfrage wird es mehrmals verwendet, um jede Farbteilzeichenfolge zu isolieren.
  • UNION-Operator: Der UNION-Operator kombiniert die Ergebnisse mehrerer SELECT-Anweisungen in einer einzigen Tabelle. Hier wird eine Reihe von Zahlen zurückgegeben, die die Positionen der Farbteilzeichenfolgen darstellen.
  • Ziffer 1: Dies addiert 1 zum Ziffernwert, um das Kommatrennzeichen am Anfang jeder Farbteilzeichenfolge zu überspringen .
  • LENGTH-Funktion: Diese Funktion berechnet die Länge einer Zeichenfolge. Hier wird es verwendet, um sicherzustellen, dass der Ziffernwert innerhalb des Bereichs der Länge der Farbzeichenfolge liegt.

Beispieldaten und -ausgabe

Für die Beispieldaten Vorausgesetzt:

+----+----------------------+
| id | colors               |
+----+----------------------+
| 1  | Red,Green,Blue       |
| 2  | Orangered,Periwinkle |
+----+----------------------+

Die Ausgabe der Abfrage lautet:

+----+------------+
| id | colors     |
+----+------------+
| 1  | Red        |
| 1  | Green      |
| 1  | Blue       |
| 2  | Orangered  |
| 2  | Periwinkle |
+----+------------+

Das obige ist der detaillierte Inhalt vonWie kann ich MySQLs GROUP_CONCAT umkehren, um verkettete Daten zu trennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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