Mysql “不喜欢”条款不起作用

Mysql “不喜欢”条款不起作用,mysql,sql,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子句有什么问题?将第二组的或更改为和 AND (client_name NOT LIKE 'P4%' AND client_name

这是我的疑问:

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

将第二组的
更改为

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

将第二组的
更改为

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

您必须使用,而不是或处于不相似状态

您必须使用,而不是或处于不相似状态

尝试以下方法:

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%') 选择* 从客户信息 式中(类似于“G%”的cid或类似于“H%”的cid或类似于“J%”的cid) 和(客户名称不象“P4%”,客户名称不象“P5%”) 必须使用AND AND not OR运算符。因为您使用的是NOT LIKE so,所以必须检查任一条件。

尝试以下操作:

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%') 选择* 从客户信息 式中(类似于“G%”的cid或类似于“H%”的cid或类似于“J%”的cid) 和(客户名称不象“P4%”,客户名称不象“P5%”)
必须使用AND AND not OR运算符。因为您使用的不是这样,所以必须检查任一条件。

其他人给了您正确的答案-您需要使用AND而不是OR。但值得理解的是为什么。以一位名叫P5_JONES的客户为例——为什么这个患者会出现在名单上?因为它的名字不像“P4%”。是的,它类似于P5%,但如果有OR,则只有其中一个表达式需要为true才能满足条件

其他人给了你正确的答案-你需要使用AND而不是OR。但值得理解的是为什么。以一位名叫P5_JONES的客户为例——为什么这个患者会出现在名单上?因为它的名字不像“P4%”。是的,它类似于P5%,但如果有OR,则只有其中一个表达式需要为true才能满足条件

关于
client\u name
位,您是对的,但是对
cid
部分使用
,WHERE
子句将永远不会返回任何记录。在P4和P5之前有相当多的带空格的记录。我刚刚在P4和P5之前添加了%,效果很好。非常感谢@JimStewart
cid类似“G%”和cid类似“H%”
cid='G'和cid='H'
不同,第二个不返回任何行。@Mikeracford我不建议这样做。使用
LTRIM
去除任何前导空格字符。关于
client_name
位,您是对的,但是对
WHERE
子句的
cid
部分使用
将永远不会返回任何记录。在P4和P5之前有相当多的记录带有空格。我刚刚在P4和P5之前添加了%,效果很好。非常感谢@JimStewart
cid类似“G%”和cid类似“H%”
cid='G'和cid='H'
不同,第二个不返回任何行。@Mikeracford我不建议这样做。使用
LTRIM
删除任何前导空格字符。