Valeurs multiples dans les requêtes MySQL LIKE
Dans les bases de données, l'opérateur LIKE est couramment utilisé pour faire correspondre des modèles dans des chaînes. Cependant, cela peut devenir délicat lorsque vous devez trouver des correspondances pour plusieurs valeurs dans un seul champ. Cet article explore le problème de l'interrogation de plusieurs valeurs à l'aide de l'opérateur LIKE dans MySQL.
Pourquoi la requête LIKE ne fonctionne pas
Selon votre requête fournie :
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Cette requête cherche à récupérer les lignes où le champ « intérêts » contient soit « sports », soit « pub », ou les deux. Cependant, il se peut que cela ne donne pas les résultats souhaités car LIKE vérifie séquentiellement la présence des modèles spécifiés. Dans ce cas, il recherche d'abord « %sports% », qui existe dans toutes les lignes, puis « %pub% », qui n'existe que dans une seule ligne. Ainsi, vous n'obtiendrez que la ligne contenant à la fois « sports » et « pub ».
Des solutions plus rapides et plus efficaces
Au lieu d'utiliser LIKE avec plusieurs modèles, considérez les alternatives suivantes :
OU Logique Opérateur :
WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Cette requête utilise l'opérateur logique OR pour combiner deux instructions LIKE. Il renverra toutes les lignes correspondant à l'un ou l'autre modèle. Cette méthode est généralement plus rapide que LIKE avec plusieurs modèles.
Expression régulière REGEXP :
WHERE interests REGEXP 'sports|pub'
L'opérateur REGEXP vous permet de rechercher des expressions régulières. Dans ce cas, l'expression « sports|pub » signifie qu'il trouvera des correspondances pour « sports » ou « pub ». REGEXP peut être un outil puissant pour une correspondance de modèles plus complexes.
Liens de référence :
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!