2010-10-17 54 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