這裏是我的查詢:
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子句有什麼問題?
這裏是我的查詢:
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子句有什麼問題?
將第二組的OR
更改爲AND
。
AND (client_name NOT LIKE 'P4%' AND client_name NOT LIKE 'P5%')
你必須使用AND代替或NOT LIKE條件
試試這個:
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所以你必須檢查任何一個條件。
其他人給你正確的答案 - 你需要使用AND而不是OR。但值得理解的原因。以一個名爲P5_JONES的客戶爲例 - 爲什麼這個病人出現在名單中?因爲它的名字不是'P4%'。是的,它就像P5%,但是在那裏有一個OR,只有其中一個表達式需要是真的才能滿足條件。
你對'client_name'位正確,但對'WHERE'子句的'cid'部分使用'AND'將永遠不會返回任何記錄。 –
+1,但第一個過濾器集合應該很好 – msmucker0527
@JimStewart Ooops。你是對的。 – Kermit