2015-08-04 4 views
0

Я пытаюсь найти все строки, которые не содержат три строки, «Канада», «США» и «США», и вот что у меня естьНесколько условий MySql

SELECT 
    * 
FROM 
    `Table` 
WHERE 
    `address` LIKE "%United States%" = 0 
    OR `address` LIKE "%USA%" = 0 
    OR `address` LIKE "%Canada%" = 0 

Так что если у него есть либо «Канада», либо «Соединенные Штаты» или «США». Я не знаю, что это показать. Он работает, если есть один, как этот

SELECT 
    * 
FROM 
    `Table` 
WHERE 
    `address` LIKE "%United States%" = 0 

Тогда я получаю все, что не «Соединенные Штаты», но она не работает со всеми тремя?

Благодаря

+1

Вы пытались изменить 'OR' на' AND'? Кроме того, его, вероятно, легче читать с помощью «NOT LIKE». , , – sgeddes

+0

Используйте инструкцию 'NOT LIKE' (адрес WHERE '' NOT LIKE'% United States%) – rsm23

ответ

2

Прежде всего, я думаю, вы должны использовать NOT LIKE вместо LIKE = 0, но главная проблема в том, что вы используете OR для отрицательных условия, которые не дают вам желаемого результата. Вы должны использовать AND.

WHERE 
`address` NOT LIKE "%United States%" 
AND `address` NOT LIKE "%USA%" 
AND `address` NOT LIKE "%Canada%" 

Вы получали неожиданные результаты, потому что, если это так, как работает OR. Если он соответствует любому из трех случаев в вашем состоянии, даже если он не соответствует двум другим. Поэтому строки с «США» в них не соответствовали условию LIKE "%USA%", но они соответствовали двум другим, и поскольку по крайней мере одно из ваших условий OR соответствовало, оно вернуло этот результат.

С И вместо OR вы должны получить ожидаемый результат.

0

ГДЕ $ targeted_column! = «$ Prohibited_words»

Смежные вопросы