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