Aller au contenu

Ou non exclusif dans mysql ?


Sujets conseillés

Posté

Pour nettoyer les soumissions de mon annuaire je fais des requètes successives de ce type dans phpmyadmin :

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

SELECT * 
FROM `ma_table`
WHERE `title` LIKE 'viagra OR poker OR cialis...'
LIMIT 0 , 200

Posté
SELECT *
FROM `ma_table` WHERE `title` LIKE '%viagra%' or `title` like '%poker%' or `title` like '%cialis%'
LIMIT 0, 200

Posté

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 ?

Posté

Non, tu es obligé... Par contre, pour les champs qui sont égal à la valeur, tu peux utiliser un IN :

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

Ce qui équivaut à

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 :(

Posté

En utilisant REGEXP (?) :

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...