MySQL中的NOT LIKE查询问题

seb*_*ian 1 mysql

我想做一个选择,排除从07,0256和0356开始的条目.这是我累了:

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

但它一直在选择所有条目.

Mar*_*ers 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%'
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM rapoarte
WHERE NOT (
   nrtel LIKE '07%' OR 
   nrtel LIKE '0256%' OR 
   nrtel LIKE '0356%'
)
Run Code Online (Sandbox Code Playgroud)

表达(NOT a) OR (NOT B)方式不一样NOT (a OR b).参见德摩根定律.