Heim > Datenbank > MySQL-Tutorial > Wie kann ich durch Kommas getrennte Werte in SQLite mithilfe allgemeiner Tabellenausdrücke einfach aufteilen?

Wie kann ich durch Kommas getrennte Werte in SQLite mithilfe allgemeiner Tabellenausdrücke einfach aufteilen?

DDD
Freigeben: 2025-01-03 00:11:42
Original
594 Leute haben es durchsucht

How Can I Easily Split Comma-Separated Values in SQLite Using Common Table Expressions?

Erstellen eines einfachen Ansatzes zum Teilen von durch Kommas getrennten Werten in SQLite

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 != ''
)
Nach dem Login kopieren

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!='';
Nach dem Login kopieren

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

Dieser Ansatz bietet mehrere Vorteile:

  • Es verwendet einen rekursiven CTE, der eine elegante und effiziente Möglichkeit darstellt, mit der iterativen Natur der Aufteilung umzugehen.
  • Die Ausgabe ist leicht zu verstehen und zu bearbeiten.
  • Es ist nicht erforderlich, die Funktionen „Replace()“ und „Trim()“ zu verwenden, die komplexer sein können und fehleranfällig.

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage