Maison > base de données > tutoriel mysql > Comment puis-je utiliser efficacement MySQL pour rechercher des lignes correspondant à plusieurs valeurs dans un champ de chaîne ?

Comment puis-je utiliser efficacement MySQL pour rechercher des lignes correspondant à plusieurs valeurs dans un champ de chaîne ?

Barbara Streisand
Libérer: 2025-01-06 05:13:43
original
875 Les gens l'ont consulté

How Can I Efficiently Use MySQL to Find Rows Matching Multiple Values in a String Field?

Élargissement de la portée de l'opérateur Like de MySQL

L'opérateur Like de MySQL est un outil puissant pour faire correspondre des modèles dans des chaînes. Cependant, cela peut parfois échouer lorsqu'il s'agit de critères de correspondance complexes impliquant plusieurs valeurs.

Considérez la requête suivante, qui vise à récupérer les lignes où le champ d'intérêts contient soit sports, soit pub (ou les deux) :

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Copier après la connexion

À la surprise de beaucoup, cette requête ne produit pas les résultats escomptés. La raison réside dans la manière dont l’opérateur Like gère plusieurs modèles. Il applique chaque modèle séquentiellement et renvoie les lignes qui correspondent aux deux modèles. Dans ce cas, la requête devient effectivement :

SELECT * FROM table WHERE interests LIKE ('%sports%') AND interests LIKE ('%pub%')
Copier après la connexion

Comme aucune des valeurs du champ d'intérêt ne contient à la fois "sports" et "pub", la requête renvoie un ensemble vide.

La solution : adopter des techniques de correspondance alternatives

Pour résoudre ce problème, nous devons adopter une approche différente. La première option consiste à séparer les modèles à l'aide d'opérateurs logiques :

SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Copier après la connexion

Cette requête correspond efficacement aux lignes qui contiennent soit « sports » soit « pub » dans le champ d'intérêts.

Une option encore plus Une solution efficace consiste à utiliser l'opérateur REGEXP de MySQL, qui nous permet de faire correspondre des modèles à l'aide d'expressions régulières :

SELECT * FROM table WHERE interests REGEXP 'sports|pub'
Copier après la connexion

Cette requête utilise le '|' (pipe) pour spécifier que le champ d'intérêt doit correspondre soit à « sports » soit à « pub ».

En employant ces techniques de correspondance alternatives, nous pouvons étendre la fonctionnalité de l'opérateur Like et récupérer les lignes qui correspondent à nos souhaits. critères.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal