Einführung
Extrahieren einzelner Werte aus durch Kommas getrennten Werten Zeichenfolgen sind eine häufige Anforderung bei der Datenanalyse. In SQLite gibt es kein direktes Äquivalent zur SubString()-Funktion von SQL, was diese Aufgabe etwas anspruchsvoll macht. Mithilfe von Common Table Expressions (CTEs) können wir jedoch eine effiziente und intuitive Lösung erstellen.
Die Lösung: Verwendung eines CTE
Ein CTE ermöglicht uns um eine temporäre Ergebnismenge zu definieren und zu benennen. Durch die Nutzung der Rekursion innerhalb eines CTE können wir die durch Kommas getrennte Zeichenfolge iterativ analysieren und dabei jeden Wert einzeln extrahieren.
Die CTE-Deklaration sieht in unserem Fall etwa so aus:
WITH split(word, csv) AS ( -- 'initial query' (see SQLite docs linked above) SELECT '', 'Auto,A,1234444'||',' -- 'recursive query' UNION ALL SELECT substr(csv, 0, instr(csv, ',')), substr(csv, instr(csv, ',') + 1) FROM split WHERE csv != '' )
In der „ersten Abfrage“ erstellen wir einen Ausgangspunkt für den rekursiven Teil des CTE. Wir geben eine leere Zeichenfolge für „Wort“ an und hängen eine durch Kommas getrennte Zeichenfolge mit einem zusätzlichen Komma an, um das Ende der CSV anzuzeigen.
Bei der „rekursiven Abfrage“ geschieht die Magie. Es verwendet die Funktion instr(), um die Position des ersten Kommas im Feld „csv“ zu ermitteln. Anschließend wird das Feld „csv“ mithilfe von substr() in „word“ und den verbleibenden „csv“-Teil aufgeteilt.
Rekursion wird verwendet, um den verbleibenden „csv“-Teil so lange aufzuteilen, bis keine Kommas mehr übrig sind , wodurch effektiv alle durch Kommas getrennten Werte extrahiert werden.
Abrufen der Teilung Werte
Sobald der CTE die Teilungswerte definiert hat, können wir sie mit einer einfachen Abfrage abrufen:
SELECT word FROM split WHERE word!='';
Die WHERE-Klausel filtert die leeren Zeichenfolgen heraus, die die anfänglichen und darstellen Endwerte.
Ausgabe und Vorteile
Die Ausgabe der Abfrage ist wie folgt folgt:
Auto A 1234444
Dieser Ansatz bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Werte in SQLite mithilfe allgemeiner Tabellenausdrücke einfach aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!