Transformation kommagetrennter Daten in MySQL
Diese Anleitung erklärt, wie Sie durch Kommas getrennte Werte innerhalb einer MySQL-Spalte effizient in einzelne Zeilen konvertieren. Wir nutzen MySQL-Funktionen und eine clevere Technik:
Erstellen einer Zahlenfolge: Erstellen Sie zunächst eine temporäre Tabelle (oder verwenden Sie eine vorhandene), die eine Folge von Ganzzahlen enthält. Diese Sequenz sollte größer sein als die maximale Anzahl durch Kommas getrennter Werte in Ihrer Zielspalte. Diese Sequenz dient als Index zum Extrahieren einzelner Werte.
Hebelwirkung SUBSTRING_INDEX
: Die SUBSTRING_INDEX
-Funktion ist hier der Schlüssel. Es extrahiert Teilzeichenfolgen basierend auf einem Trennzeichen und einem angegebenen Vorkommen. Wir verwenden es zweimal in Verbindung mit der Zahlenfolge, um jeden Wert zu isolieren.
Hier ist ein Beispiel, das diesen Ansatz veranschaulicht:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) AS value FROM table1 t CROSS JOIN (SELECT a.N + b.N * 10 + c.N * 100 AS 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 ,(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) c ) n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
Erklärung:
SELECT
-Anweisung erstellt eine Zahlenfolge (passen Sie diese nach Bedarf an Ihre Daten an).CROSS JOIN
kombiniert diese Sequenz mit Ihrer Tabelle (table1
).SUBSTRING_INDEX(t.values, ',', n.n)
extrahiert den Teilstring bis zum nten Komma.SUBSTRING_INDEX(..., ',', -1)
extrahiert dann den Wert aus dem vorherigen Ergebnis bis zum Ende der Zeichenfolge.WHERE
-Klausel stellt sicher, dass wir nur Werte innerhalb der Grenzen der durch Kommas getrennten Zeichenfolge verarbeiten. Die Bedingung LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) 1
berechnet dynamisch die Anzahl der Werte.Diese Methode teilt Ihre durch Kommas getrennten Werte effektiv in einzelne Zeilen auf und bietet so eine saubere und effiziente Lösung für die Datenmanipulation in MySQL. Denken Sie daran, table1
und values
durch Ihre tatsächlichen Tabellen- und Spaltennamen zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie teilt man durch Kommas getrennte Werte in MySQL in Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!