2010-10-17 55 views
1

我想做出选择排除与07,0256和0356. 这个启动项是我累了:问题与NOT LIKE查询在MySQL

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

,但会将所有选择条目。

+2

用'AND'开关'OR',你很好走。 – Wrikken 2010-10-17 21:30:59

+0

谢谢,我不知道为什么我从来没有想过这个 – sebastian 2010-10-17 21:32:31

回答

6

条件nrtel NOT LIKE '0256%' OR nrtel NOT LIKE '0356%'始终为真(除非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

+0

(不是A)或(非B)==不是(A和B) – malletjo 2010-10-17 21:42:11

+0

查询在mysql中工作,但不在PHP中。我没有得到任何结果。 – sebastian 2010-10-17 21:43:47