Durch Kommas getrennte Spalten in Zeilen mit DB2 aufteilen
Im Bereich der Datenbankverwaltung kann der Umgang mit durch Kommas getrennten Werten oft ein Problem darstellen Eine Herausforderung, insbesondere wenn es darum geht, einzelne Werte in separate Zeilen zu extrahieren. Ein solches Szenario entsteht, wenn eine Tabelle eine Spalte mit durch Kommas getrennten Verweisen enthält und die Notwendigkeit besteht, diese Verweise in einzelne Zeilen aufzuteilen.
Problemstellung
Bedenken Sie a Tabelle mit folgender Struktur:
Id | FK_ID | Reference ----------------------- 1 | 2100 | GI2, GI32 2 | 2344 | GI56
Ziel ist es, diese Daten in die folgenden gewünschten Werte umzuwandeln Ausgabe:
Id | FK_ID | Reference ----------------------- 1 | 2100 | GI2 2 | 2100 | GI32 3 | 2344 | GI56
DB2-Lösung
Um diese Datentransformation zu erreichen, stellt DB2 eine rekursive SQL-Anweisung bereit, die die durch Kommas getrennten Werte iterativ in einzelne Zeilen aufteilt. Die Lösung nutzt den folgenden SQL-Code:
WITH unpivot (lvl, id, fk_ref, reference, tail) AS ( SELECT 1, id, fk_ref, CASE WHEN LOCATE(',',reference) > 0 THEN TRIM(LEFT(reference, LOCATE(',',reference)-1)) ELSE TRIM(reference) END, CASE WHEN LOCATE(',',reference) > 0 THEN SUBSTR(reference, LOCATE(',',reference)+1) ELSE '' END FROM yourtable UNION ALL SELECT lvl + 1, id, fk_ref, CASE WHEN LOCATE(',', tail) > 0 THEN TRIM(LEFT(tail, LOCATE(',', tail)-1)) ELSE TRIM(tail) END, CASE WHEN LOCATE(',', tail) > 0 THEN SUBSTR(tail, LOCATE(',', tail)+1) ELSE '' END FROM unpivot WHERE lvl < 100 AND tail != '') SELECT id, fk_ref, reference FROM unpivot
Erklärung
Dieser rekursive CTE (Common Table Expression) mit dem Namen unpivot verwendet die UNION ALL-Klausel, um die Referenz iterativ aufzuteilen Spalte in einzelne Werte:
Hinweis:
Es ist wichtig, das Speichern von Daten in einem durch Kommas getrennten Format zu vermeiden, da dies zu Problemen mit der Datenintegrität und Datenverlust führen kann Manipulation und Abfrage komplexer. Die bereitgestellte Lösung bietet jedoch eine Möglichkeit, solche Daten in Fällen, in denen dies unvermeidlich oder notwendig ist, in ein besser verwaltbares und benutzerfreundlicheres Format umzuwandeln.
Das obige ist der detaillierte Inhalt vonWie zerlege ich durch Kommas getrennte Spalten mithilfe von DB2 SQL in Zeilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!