Faire correspondre plusieurs mots dans des enregistrements MySQL à l'aide de LIKE ou REGEXP
Lorsque vous utilisez l'opérateur LIKE pour rechercher des enregistrements contenant des mots spécifiques, vous pouvez rencontrer difficultés si les mots apparaissent à des endroits différents dans le champ. Pour résoudre ce problème, envisagez d'utiliser l'opérateur REGEXP.
Par exemple, disons que vous avez une table nommée « table » avec un champ appelé « nom » qui contient la valeur « Stylus Photo 2100 ». En utilisant l'opérateur LIKE, la requête suivante :
SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus 2100%'
ne renverra aucun résultat. En effet, l'opérateur LIKE recherche une correspondance exacte de la chaîne spécifiée.
Pour rechercher des enregistrements contenant les mots « Stylus » et « 2100 » dans n'importe quel ordre, vous pouvez utiliser l'opérateur REGEXP, comme indiqué dans cette requête :
SELECT `name` FROM `table` WHERE `name` REGEXP 'Stylus.+2100'
Cette requête utilisera une expression régulière pour rechercher des enregistrements dont le champ « nom » contient le mot « Stylus » suivi d'un nombre quelconque de caractères (indiqué par le '.'), puis le mot « 2100 ».
Vous pouvez également utiliser l'opérateur LIKE plusieurs fois, comme indiqué dans cette requête :
SELECT `name` FROM `table` WHERE `name` LIKE '%Stylus%' AND `name` LIKE '%2100%'
Ceci la requête renverra les enregistrements dont le champ « nom » contient le mot « Stylet » et le mot « 2100 », quelle que soit leur position.
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!