Heim >Datenbank >MySQL-Tutorial >Wie kann ich durch Kommas getrennte Werte in SQLite mithilfe eines Common Table Expression (CTE) aufteilen?
Aufteilen von durch Kommas getrennten Werten in SQLite: Ein Common Table Expression (CTE)-Ansatz
Im Bereich der Datenverwaltung besteht die Notwendigkeit Es kommt häufig zu geteilten kommagetrennten Werten (CSVs). Für SQLite, ein beliebtes, leichtgewichtiges Datenbanksystem, ist diese Aufgabe möglicherweise nicht so einfach wie in anderen SQL-Umgebungen, da keine dedizierte Funktion substring() vorhanden ist. Es gibt jedoch eine alternative Lösung, die einen Common Table Expression (CTE) nutzt.
Betrachten wir das folgende Szenario: Wir haben eine Tabelle mit einer Spalte „Kategorie“, die durch Kommas getrennte Zeichenfolgen enthält, und wir möchten sie extrahieren einzelne Werte aus jeder Zeichenfolge in separate Zeilen.
Ein CTE ist eine benannte, temporäre Ergebnismenge, die innerhalb einer einzelnen Abfrage weiter referenziert und bearbeitet werden kann. In unserem Fall können wir einen CTE verwenden, um die CSV-Strings rekursiv aufzuteilen und die extrahierten Werte in einer neuen Tabelle zu speichern. Hier ist die Abfrage:
WITH split(word, csv) AS ( -- 'initial query' SELECT '', 'Auto,A,1234444'||',' -- terminate with ',' indicating csv ending -- 'recursive query' UNION ALL SELECT substr(csv, 0, instr(csv, ',')), -- each word contains text up to next ',' substr(csv, instr(csv, ',') + 1) -- next recursion parses csv after this ',' FROM split -- recurse WHERE csv != '' -- break recursion once no more csv words exist ) SELECT word FROM split WHERE word!=''; -- filter out 1st/last rows
Diese Abfrage teilt die CSV-Zeichenfolgen mithilfe der Funktion instr() auf, um das erste Komma zu finden, extrahiert die Teilzeichenfolge vor dem Komma und ruft sich rekursiv auf, um den Vorgang für den verbleibenden Teil zu wiederholen der Saite. Die Rekursion wird beendet, wenn keine Kommas mehr übrig sind.
Die resultierende Ausgabe enthält die einzelnen Werte, die aus den ursprünglichen CSV-Strings extrahiert wurden, organisiert in Zeilen:
Auto A 1234444
Dieser Ansatz bietet eine leistungsstarke und Flexible Möglichkeit, durch Kommas getrennte Werte in SQLite aufzuteilen, was es zu einem wertvollen Werkzeug für Datenmanipulationsaufgaben macht.
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Werte in SQLite mithilfe eines Common Table Expression (CTE) aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!