Heim > Datenbank > MySQL-Tutorial > Wie teilt man durch Kommas getrennte Werte in MySQL in Zeilen auf?

Wie teilt man durch Kommas getrennte Werte in MySQL in Zeilen auf?

Mary-Kate Olsen
Freigeben: 2025-01-14 09:21:11
Original
690 Leute haben es durchsucht

How to Split Comma-Separated Values into Rows in MySQL?

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:

  1. 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.

  2. 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>
Nach dem Login kopieren

Erklärung:

  • Die verschachtelte 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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage