Maison  >  Article  >  base de données  >  Comment rechercher efficacement des valeurs spécifiques dans des listes séparées par des virgules dans MySQL ?

Comment rechercher efficacement des valeurs spécifiques dans des listes séparées par des virgules dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-09 14:17:02845parcourir

How to Efficiently Search for Specific Values in Comma-Separated Lists in MySQL?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn