Maison > base de données > tutoriel mysql > Comment diviser efficacement des chaînes séparées par des virgules dans SQLite à l'aide de CTE ?

Comment diviser efficacement des chaînes séparées par des virgules dans SQLite à l'aide de CTE ?

DDD
Libérer: 2024-12-31 06:08:13
original
1017 Les gens l'ont consulté

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

Diviser les valeurs séparées par des virgules avec les expressions de table communes de SQLite

Question :

Comment peut-on J'ai divisé sans effort une chaîne séparée par des virgules dans la colonne Catégorie d'une table SQLite ? Je recherche une approche plus simple que d'utiliser Replace() et Trim() et évite les limitations de substr().

Réponse :

SQLite propose une fonctionnalité appelée Common Table Expressions (CTE) qui permettent des requêtes récursives, ce qui facilite le fractionnement des valeurs séparées par des virgules. Voici une répartition :

Requête :

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!='';
Copier après la connexion

Explication :

  • 'requête initiale ': Initialise le CTE avec une seule ligne contenant une chaîne vide et la chaîne séparée par des virgules terminée avec une virgule supplémentaire.
  • 'requête récursive' : Sélectionne de manière récursive les mots jusqu'à la virgule suivante et la partie restante de la chaîne, en la divisant continuellement jusqu'à ce qu'il n'y ait plus de virgules.
  • 'requête finale' : Filtre la ligne vide initiale et la virgule terminale de la division résultats.

Sortie :

Auto
A
1234444
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal