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

mySql :obtient les lignes où le nombre de mots dans la cellule (chaîne séparée par des virgules) a la même valeur qu'une cellule correspondante

Considérez :

select *
from tab1
where char_length(type) - char_length(replace(type, ',', '')) + 1 = qta

Expression char_length(type) - char_length(replace(type, ',', '')) vous donne le nombre de virgules dans la chaîne. Ajout de 1 à cela vous donne le nombre de mots dans la chaîne.

Démo sur DB Fiddle :

id | cod | type        | qta
-: | :-- | :---------- | --:
 1 | aaa | aaa,bbb,ccc |   3
 2 | aaa | ddd         |   1
 4 | aaa | ggg,hhh     |   2