2013-10-04 37 views
0

這裏是我的查詢:
NOT LIKE子句中的沒有工作

SELECT * 
FROM client_info 
WHERE (cid LIKE 'G%' OR cid LIKE 'H%' OR cid LIKE 'J%') 
AND (client_name NOT LIKE 'P4%' OR client_name NOT LIKE 'P5%') 

結果仍然含有開始P4和P5客戶端名稱。 NOT LIKE子句有什麼問題?

回答

3

將第二組的OR更改爲AND

AND (client_name NOT LIKE 'P4%' AND client_name NOT LIKE 'P5%') 
+1

你對'client_name'位正確,但對'WHERE'子句的'cid'部分使用'AND'將永遠不會返回任何記錄。 –

+0

+1,但第一個過濾器集合應該很好 – msmucker0527

+0

@JimStewart Ooops。你是對的。 – Kermit

0

你必須使用AND代替或NOT LIKE條件

0

試試這個:

 
SELECT * 
FROM client_info 
WHERE (cid LIKE 'G%' OR cid LIKE 'H%' OR cid LIKE 'J%') 
AND (client_name NOT LIKE 'P4%' AND client_name NOT LIKE 'P5%') 

必須使用AND和OR不操作。因爲你使用NOT LIKE所以你必須檢查任何一個條件。

1

其他人給你正確的答案 - 你需要使用AND而不是OR。但值得理解的原因。以一個名爲P5_JONES的客戶爲例 - 爲什麼這個病人出現在名單中?因爲它的名字不是'P4%'。是的,它就像P5%,但是在那裏有一個OR,只有其中一個表達式需要是真的才能滿足條件。