这是我的疑问:
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子句有什么问题?
答案 0 :(得分:3)
将第二组的OR
更改为AND
。
AND (client_name NOT LIKE 'P4%' AND client_name NOT LIKE 'P5%')
答案 1 :(得分:1)
其他人给你正确答案 - 你需要使用AND而不是OR。但值得理解的原因。以一个名为P5_JONES的客户为例 - 为什么这名患者出现在名单中?因为它的名字不像'P4%'。是的,它就像P5%,但是在那里有一个OR,只有其中一个表达式需要为真以满足条件。
答案 2 :(得分:0)
你必须在NOT LIKE条件中使用AND而不是OR
答案 3 :(得分: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,所以必须检查这两种情况。