MySQL中的NOT LIKE查询问题

时间:2010-10-17 21:29:59

标签: mysql

我想做出一个选择,排除以07,0256和0356开头的条目。 这就是我累了:

SELECT * FROM rapoarte WHERE nrtel NOT LIKE '07%' OR nrtel NOT LIKE '0256%' OR nrtel NOT LIKE '0356%'

但它会不断选择所有条目。

1 个答案:

答案 0 :(得分:7)

条件nrtel NOT LIKE '0256%' OR nrtel NOT LIKE '0356%'始终为true(除非nrtel为NULL)。您需要使用AND:

SELECT * FROM rapoarte
WHERE nrtel NOT LIKE '07%' 
AND nrtel NOT LIKE '0256%'
AND nrtel NOT LIKE '0356%'

如果你觉得它更容易阅读,你可以按如下方式重写:

SELECT * FROM rapoarte
WHERE NOT (
   nrtel LIKE '07%' OR 
   nrtel LIKE '0256%' OR 
   nrtel LIKE '0356%'
)

表达式(NOT a) OR (NOT B)NOT (a OR b)不同。请参阅De Morgan's Laws