Durch Kommas getrennte SQL-Werte in mehrere Zeilen umwandeln
Eine häufige SQL-Aufgabe besteht darin, den Inhalt einer einzelnen Zelle in mehrere Zeilen aufzuteilen. Betrachten Sie zum Beispiel diese Tabelle:
<code class="language-sql">id | name 1 | a,b,c 2 | b</code>
Das Ziel besteht darin, diese Daten wie folgt umzustrukturieren:
<code class="language-sql">id | name 1 | a 1 | b 1 | c 2 | b</code>
Methode 1: Eine Zahlentabelle nutzen
Eine effektive Lösung nutzt eine bereits vorhandene „Zahlen“-Tabelle (eine Tabelle, die eine sequentielle Liste von ganzen Zahlen enthält). Die folgende Abfrage veranschaulicht diesen Ansatz:
<code class="language-sql">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</code>
Methode 2: Dynamische Generierung von Zahlen (keine Zahlentabelle erforderlich)
Wenn keine dedizierte Nummerntabelle verfügbar ist, kann eine temporäre Nummernfolge innerhalb der Abfrage selbst generiert werden:
<code class="language-sql">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</code>
Denken Sie daran, den Abschnitt UNION ALL
in der zweiten Methode anzupassen, um die maximale Anzahl von durch Kommas getrennten Werten aufzunehmen, die Sie in Ihrer Spalte name
erwarten. Beide Methoden erzielen das gleiche Ergebnis – die Aufteilung der durch Kommas getrennten Werte in einzelne Zeilen.
Das obige ist der detaillierte Inhalt vonWie teile ich durch Kommas getrennte Werte in SQL in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!