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
963 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!

source:php.cn
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