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

Wie teile ich durch Kommas getrennte Zeilen in SQL auf?

DDD
DDDOriginal
2025-01-14 09:25:43309Durchsuche

How to Split Comma-Separated Rows in SQL?

Komma-getrennte Zeilen in SQL teilen

In SQL kann es vorkommen, dass Sie eine Spalte mit durch Kommas getrennten Werten in einzelne Zeilen aufteilen müssen. Dies kann durch eine Vielzahl von Techniken erreicht werden, darunter reine SQL-Abfragen oder externe Tools.

Eine effiziente Möglichkeit, durch Kommas getrennte Zeilen in reinem SQL zu teilen, ist die Verwendung einer Kombination der Funktionen SUBSTRING_INDEX() und CROSS JOIN. SUBSTRING_INDEX() Die Funktion extrahiert eine Teilzeichenfolge aus einer bestimmten Zeichenfolge basierend auf dem angegebenen Trennzeichen und der angegebenen Position. CROSS JOIN Funktion multipliziert mehrere Zeilen aus verschiedenen Tabellen und erstellt so ein kartesisches Produkt.

Mit diesen Funktionen können Sie eine Zahlenfolge generieren und darüber iterieren. Für jede Zahl können Sie mit der Funktion SUBSTRING_INDEX() die gewünschten durch Kommas getrennten Werte aus der Quellspalte extrahieren. Hier ist eine Beispielabfrage:

<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 erstellt eine Zahlenfolge von 1 bis 100 und iteriert darüber, um durch Kommas getrennte Werte aus jeder Quellzeile zu extrahieren. Die Funktion SUBSTRING_INDEX() wird verwendet, um den gewünschten Wert basierend auf der Position der Zahl in der Sequenz zu extrahieren. Die WHERE-Klausel stellt sicher, dass nur vorhandene durch Kommas getrennte Werte extrahiert werden, wodurch Fehler außerhalb der Grenzen vermieden werden.

Alternativ können Sie eine persistente Zähltabelle verwenden, um numerische Sequenzen zu generieren und Abfragen zu vereinfachen. Die resultierende Abfrage ähnelt der obigen Abfrage, die Unterabfrage wird jedoch durch einen Verweis auf die Zähltabelle ersetzt.

Zusammen ermöglichen Ihnen diese Techniken das Teilen von durch Kommas getrennten Zeilen in SQL, ohne dass komplexe Abfragen oder externe Tools erforderlich sind. Die Wahl der Methode hängt von den spezifischen Anforderungen der Anwendung und Leistungsaspekten ab.

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