Recherche de listes séparées par des virgules dans MySQL
Lorsque vous traitez un champ MySQL contenant une liste d'identifiants séparés par des virgules (par exemple, " 12,13,14,16"), il devient difficile de rechercher spécifiquement certaines valeurs dans cette liste à l'aide d'un LIKE opérateur.
Un utilisateur confronté à ce problème a cherché un moyen de rechercher une valeur spécifique (par exemple, "1") dans un tel champ. Cependant, l'utilisation d'une requête telle que "SELECT... WHERE field LIKE '%1%'" entraînerait la récupération de presque toutes les entrées en raison de la prévalence des identifiants compris entre 10 et 20 dans le champ.
Pour résoudre ce problème, l'utilisateur a envisagé de rechercher « %1,% » à la place. Cependant, cette approche ne fonctionnerait pas pour le premier et le dernier identifiant du champ.
Solution : fonction FIND_IN_SET
La solution réside dans l'utilisation de la fonction FIND_IN_SET dans MySQL. FIND_IN_SET prend deux arguments : une chaîne à rechercher et une chaîne séparée par des virgules dans laquelle rechercher. Il renvoie la position de la chaîne recherchée dans la chaîne de recherche, ou 0 si elle n'est pas trouvée.
Dans ce cas, pour rechercher "1" dans le champ, la requête serait :
SELECT ... WHERE FIND_IN_SET('1', field)
Cette requête renverra uniquement les lignes où « 1 » est présent dans la liste des identifiants séparés par des virgules dans le champ.
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!