0

这是我的查询:

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

4 回答 4

3

将第二组更改ORAND.

AND (client_name NOT LIKE 'P4%' AND client_name NOT LIKE 'P5%')
于 2013-10-04T15:21:39.750 回答
1

其他人已经给了你正确的答案——你需要使用 AND 而不是 OR。但值得理解为什么。以一个名为 P5_JONES 的客户为例 - 为什么这个病人会出现在列表中?因为它的名字不像'P4%'。是的,它就像 P5%,但是其中有一个 OR,只有其中一个表达式需要为真才能满足条件。

于 2013-10-04T15:28:44.180 回答
0

您必须在 NOT LIKE 条件下使用 AND 而不是 OR

于 2013-10-04T15:23:39.517 回答
0

试试这个:

选择 *
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 so,所以您必须检查任一条件。

于 2013-10-04T15:25:03.680 回答