Komma-getrennte Zeilen in SQL teilen
Frage:
Wie teile ich eine Spalte mit durch Kommas getrennten Werten in separate Zeilen in SQL (MySQL) auf?
Antwort:
MySQL bietet keine integrierte Funktion zum Aufteilen von durch Kommas getrennten Zeilenwerten. Sie können dies jedoch mit einer unkonventionellen Methode erreichen, die das Zählen von Zahlen und die SUBSTRING_INDEX()-Funktion von MySQL umfasst:
<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 verwendet die Funktion SUBSTRING_INDEX(), um einzelne Werte zu extrahieren, indem ein Komma als Trennzeichen und ein n-Wert als Teilungsposition angegeben werden. Zählzahlen werden mithilfe einer Unterabfrage generiert, die einen Zahlenbereich von 1 bis 100 erstellt, sodass Sie bis zu 100 getrennte Werte pro Zeile aufteilen können.
Verwenden Sie für die Methode der persistenten Zähltabelle die folgende Abfrage:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value FROM table1 t CROSS JOIN tally n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
Diese Methode bietet eine bessere Skalierbarkeit, wenn Sie eine große Anzahl von Zeilen mit durch Kommas getrennten Werten aufteilen müssen.
Das obige ist der detaillierte Inhalt vonWie teile ich durch Kommas getrennte Werte in MySQL in einzelne Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!