J'ai toujours pensé que vous pouviez utiliser OR
dans une instruction LIKE
pour interroger des choses dans MySQL. Donc, si je voulais comparer plusieurs champs consécutifs à 1 mot clé ou terme:
SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword%';
et si j'avais un tableau de mots à comparer:
SELECT * FROM MyTable WHERE Column1 OR Column2 LIKE '%keyword1%'
AND Column1 OR Column2 LIKE '%keyword2%';
Cependant, je ne pense pas que la syntaxe soit correcte. Existe-t-il une méthode efficace pour écrire ceci en dehors de quelque chose comme:
SELECT * FROM MyTable WHERE Column1 LIKE '%keyword1%' OR Column2 LIKE
'%keyword1%' AND Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%';
Suis-je en train de faire ça correctement?
Utilisez ceci::
SELECT * FROM MyTable WHERE (Column1 LIKE '%keyword1%' OR Column2 LIKE
'%keyword1%') AND (Column1 LIKE '%keyword2%' OR Column2 LIKE '%keyword2%');
Le plus proche de la syntaxe que vous désirez est:
SELECT * FROM MyTable
WHERE (CONCAT(Column1, Column2) LIKE '%keyword1%')
AND (CONCAT(Column1, Column2) LIKE '%keyword2%')
Remarque: le "%" au début de votre chaîne de recherche empêche l'utilisation d'index. S'il y a un grand nombre d'enregistrements à rechercher, il serait préférable de repenser l'implémentation.