Heim >Datenbank >MySQL-Tutorial >Wie kann man durch Kommas getrennte Zeichenfolgen in SQLite mithilfe von CTEs effizient aufteilen?

Wie kann man durch Kommas getrennte Zeichenfolgen in SQLite mithilfe von CTEs effizient aufteilen?

DDD
DDDOriginal
2024-12-31 06:08:13974Durchsuche

How to Efficiently Split Comma-Separated Strings in SQLite Using CTEs?

Durch Kommas getrennte Werte mit den allgemeinen Tabellenausdrücken von SQLite aufteilen

Frage:

Wie kann das? Ich teile mühelos eine durch Kommas getrennte Zeichenfolge in der Kategoriespalte einer SQLite-Tabelle? Ich suche einen einfacheren Ansatz als die Verwendung von Replacement() und Trim() und vermeide die Einschränkungen von substr().

Antwort:

SQLite bietet eine Funktion namens Common Table Ausdrücke (CTEs), die rekursive Abfragen ermöglichen und die Aufteilung durch Kommas getrennter Werte erleichtern. Hier ist eine Aufschlüsselung:

Abfrage:

WITH split(word, csv) AS (
  SELECT '', 'Auto,A,1234444'||','
  UNION ALL
  SELECT substr(csv, 0, instr(csv, ',')), substr(csv, instr(csv, ',') + 1)
  FROM split
  WHERE csv != ''
)
SELECT word FROM split
WHERE word!='';

Erklärung:

  • 'ursprüngliche Abfrage ': Initialisiert den CTE mit einer einzelnen Zeile, die eine leere Zeichenfolge und die durch Kommas getrennte Zeichenfolge enthält wird mit einem zusätzlichen Komma abgeschlossen.
  • 'rekursive Abfrage': Wählt rekursiv Wörter bis zum nächsten Komma und den verbleibenden Teil der Zeichenfolge aus und teilt sie kontinuierlich auf, bis keine Kommas mehr gefunden werden.
  • 'final query': Filtert die anfängliche leere Zeile und das Endkomma aus der Teilung heraus Ergebnisse.

Ausgabe:

Auto
A
1234444

Das obige ist der detaillierte Inhalt vonWie kann man durch Kommas getrennte Zeichenfolgen in SQLite mithilfe von CTEs effizient aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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