Introduction
Extraire des valeurs individuelles séparées par des virgules les chaînes sont une exigence courante dans l’analyse des données. Dans SQLite, il n'existe pas d'équivalent simple à la fonction SubString() de SQL, ce qui rend cette tâche quelque peu difficile. Cependant, avec l'aide d'expressions de table communes (CTE), nous pouvons créer une solution efficace et intuitive.
La solution : utiliser un CTE
Un CTE nous permet pour définir et nommer un jeu de résultats temporaire. En tirant parti de la récursivité au sein d'un CTE, nous pouvons analyser de manière itérative la chaîne séparée par des virgules, en extrayant chaque valeur une par une.
La déclaration CTE dans notre cas ressemble à ceci :
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 != '' )
Dans la « requête initiale », nous créons un point de départ pour la partie récursive du CTE. Nous spécifions une chaîne vide pour « mot » et ajoutons une chaîne séparée par des virgules avec une virgule supplémentaire pour indiquer la fin du CSV.
La « requête récursive » est l'endroit où la magie opère. Il utilise la fonction instr() pour trouver la position de la première virgule dans le champ 'csv'. Ensuite, il divise le champ « csv » à l'aide de substr() en « mot » et la partie « csv » restante.
La récursivité est utilisée pour continuer à diviser la partie « csv » restante jusqu'à ce qu'il ne reste plus de virgules. , extrayant efficacement toutes les valeurs séparées par des virgules.
Récupération du fractionnement Valeurs
Une fois que le CTE a défini les valeurs fractionnées, nous pouvons les récupérer à l'aide d'une simple requête :
SELECT word FROM split WHERE word!='';
La clause WHERE filtre les chaînes vides qui représentent l'initiale et valeurs terminales.
Résultat et avantages
Le résultat de la requête est le suivant suit :
Auto A 1234444
Cette approche offre plusieurs avantages :
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!