Heim >Datenbank >MySQL-Tutorial >Wie kann ich durch Kommas getrennte Werte in SQL in separate Zeilen aufteilen?

Wie kann ich durch Kommas getrennte Werte in SQL in separate Zeilen aufteilen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-14 09:55:42397Durchsuche

How Can I Split Comma-Separated Values in SQL into Separate Rows?

Komma-getrennte Zeilenwerte in SQL teilen

Bei der Datenbankverwaltung kommt es häufig vor, dass Daten als durch Kommas getrennte Werte (CSV) gespeichert werden. Für bestimmte Analyse- oder Berichtszwecke möchten Sie diese CSVs jedoch möglicherweise in separate Zeilen aufteilen. In diesem Artikel untersuchen wir einen SQL-basierten Ansatz zur Durchführung dieser Teilungsoperation.

Die Lösung besteht darin, die Funktion SUBSTRING_INDEX() in MySQL zu verwenden. Mit dieser Funktion können wir basierend auf dem Trennzeichen eine Teilzeichenfolge aus einer angegebenen Zeichenfolge extrahieren. Wir verwenden auch einen Cross-Join mit einer Zähltabelle, um eine Reihe von Zahlen zu generieren, die als Zeilenindizes für die Aufteilung der CSV verwendet werden.

Das Folgende ist die SQL-Abfrage:

<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
FROM table1 t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>

Diese Abfrage teilt effektiv die CSV-Werte der Spalte table1 in der Tabelle values auf und erstellt für jeden Wert eine neue Zeile. Zähltabellen ermöglichen die Aufteilung mehrerer Werte in einer einzigen Zeile.

Beispieldaten und Ausgabe:

Berücksichtigen Sie die folgenden Daten aus der Tabelle table1:

values
somethingA,somethingB,somethingC
somethingElseA, somethingElseB

Das Anwenden der Abfrage auf diese Daten erzeugt die folgende Ausgabe:

value
somethingA
somethingB
somethingC
somethingElseA
somethingElseB

Durch die Nutzung dieser Technologie können im CSV-Format gespeicherte Daten bequem in einzelne Zeilen aufgeteilt werden, was eine weitere Analyse oder Verarbeitung ermöglicht.

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