Version complète: sur le forum Webmaster Hub : Ou non exclusif dans mysql ?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
Sebastien
Pour nettoyer les soumissions de mon annuaire je fais des requètes successives de ce type dans phpmyadmin :

CODE
SELECT *
FROM `ma_table`
WHERE `title` LIKE '%viagra%'
LIMIT 0 , 200


Seulement je dois me taper à chaque fois les mots-clés sensibles (viagra, porn, poker etc.). Y a-t-il moyen d'avoir un "ou" (OR) booléen dans la requête ? genre ceci

CODE
SELECT *
FROM `ma_table`
WHERE `title` LIKE 'viagra OR poker OR cialis...'
LIMIT 0 , 200
Portekoi
SQL
SELECT *
FROM `ma_table` WHERE `title` LIKE '%viagra%' or `title` like '%poker%' or `title` like '%cialis%'
LIMIT 0, 200
Sebastien
Merci Portekoi ! Encore une petite question : on est à chaque fois obligé de specifier le champ pour chaque like ? Ou bien il existe une syntaxe plus compacte ?
Portekoi
Non, tu es obligé... Par contre, pour les champs qui sont égal à la valeur, tu peux utiliser un IN :

SQL
Select * from ma_table where mon_chp in ('a', 'b', 'c', 'd')


Ce qui équivaut à

SQL
Select * from ma_table where mon_chp = 'a' or mon_chp = 'b' or mon_chp = 'c' or mon_chp = 'd'


Mais cela, à ma connaissance, n'existe pas pour le like sad.gif
petit-ourson
En utilisant REGEXP (?) :

CODE
SELECT *
FROM `ma_table` WHERE `title` REGEXP 'viagra|poker|cialis'
LIMIT 0, 200

Par contre il faut voir si niveau performance cela convient, je n'en ai aucune idée.
Portekoi
Bonne idée pour les RegExp, on y pense pas assez smile.gif
Sebastien
Merci bien je vais assayer ces différentes méthodes smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.