Utilisation de l'opérateur MySQL Like pour plusieurs valeurs
Problème :
Une requête MySQL tentant de utiliser l'opérateur LIKE pour faire correspondre les valeurs contenant "sports" ou "pub" ne produit pas le résultat souhaité résultats.
Requête :
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Comportement attendu :
La requête doit renvoyer des lignes où les "intérêts" le champ contient soit "sports" soit "pub" ou les deux.
Explication :
Le problème se pose car l'opérateur LIKE avec plusieurs modèles nécessite des conditions OR. La requête fournie tente d'utiliser deux opérateurs LIKE consécutifs sans logique OU appropriée, ce qui entraîne une correspondance incorrecte.
Solution 1 : Condition OU
Une solution plus simple consiste à utiliser l'opérateur OR pour préciser les multiples critères de correspondance :
SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Solution 2 : REGEXP Opérateur
Une approche alternative consiste à utiliser l'opérateur REGEXP (expression régulière), qui prend en charge la correspondance de modèles à l'aide d'une seule expression :
SELECT * FROM table WHERE interests REGEXP 'sports|pub'
Cette expression utilise le | (barre verticale) pour spécifier un OU logique entre les deux mots-clés, ce qui donne un modèle unique qui correspond à « sports » ou à « pub », ou aux deux.
Notez que l'opérateur REGEXP est plus efficace pour faire correspondre plusieurs modèles. par rapport à l'utilisation de LIKE avec des conditions OR.
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!