Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment compter les éléments dans une liste séparée par des virgules MySQL

Il n'y a pas de fonction intégrée qui compte les occurrences de sous-chaîne dans une chaîne, mais vous pouvez calculer la différence entre la chaîne d'origine et la même chaîne sans virgule :

LENGTH(fooCommaDelimColumn) - LENGTH(REPLACE(fooCommaDelimColumn, ',', ''))

Il a été modifié plusieurs fois au cours de près de 8 ans maintenant (wow !), donc pour plus de clarté :la requête ci-dessus n'a pas besoin d'un + 1 , car les données OP ont une virgule supplémentaire à la fin.

Alors qu'effectivement, dans le cas général pour la chaîne qui ressemble à ceci :foo,bar,baz l'expression correcte serait

LENGTH(col) - LENGTH(REPLACE(col, ',', '')) + 1