NOT LIKE子句不起作用

时间:2013-10-04 15:19:51

标签: mysql sql

这是我的疑问:

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子句有什么问题?

4 个答案:

答案 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,所以必须检查这两种情况。

相关问题