Comptage des éléments dans une liste séparée par des virgules dans MySQL
Détermination du nombre d'éléments dans une liste séparée par des virgules stockés dans une colonne MySQL peut être une tâche courante dans l'analyse des données.
Utiliser la longueur de la chaîne Manipulation
Pour y parvenir sans utiliser de fonctions supplémentaires, vous pouvez exploiter la différence entre la chaîne de liste d'origine et son homologue débarrassée des virgules :
LENGTH(fooCommaDelimColumn) - LENGTH(REPLACE(fooCommaDelimColumn, ',', ''))
Cette expression soustrait la longueur de la chaîne débarrassée des virgules de la longueur de la chaîne d'origine. Étant donné que les virgules contribuent à la longueur totale, leur absence indique le nombre d'éléments.
Gestion des virgules de fin
Notez que dans ce cas, les données fournies incluent une virgule de fin supplémentaire virgule. Ceci est particulièrement pertinent car les calculs traditionnels de longueur de chaîne incluent cette virgule de fin, ce qui entraîne un décompte incorrect. En l'excluant à l'aide de la fonction REPLACE, le décompte précis est obtenu.
Cas général sans virgule finale
Dans les cas généraux où la chaîne séparée par des virgules n'a pas une virgule finale, telle que "foo,bar,baz", une expression modifiée est nécessaire :
LENGTH(col) - LENGTH(REPLACE(col, ',', '')) + 1
Les 1 comptes supplémentaires pour la virgule de fin manquante, garantissant ainsi un nombre d'éléments correct.
En employant ces techniques de manipulation de chaînes, vous pouvez compter efficacement les éléments dans une liste séparée par des virgules à l'aide de requêtes SQL pures.
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!