MySQL中否定的LIKE查询没有返回期望的结果,为什么?

4
我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我有一个包含2796个条目的mysql表。我想选择在备注字段中不包含单词SUPPR的条目。

如果我执行以下操作

SELECT * FROM `catalogues` WHERE notes LIKE "%SUPPR%"

它返回了266行。但是,如果我写出我认为的补充内容

SELECT * FROM `catalogues` WHERE notes not LIKE "%SUPPR%"

当我期望的是2530行时,它返回了762行(2796-266)。

我应该如何编写第二个请求以获得所需内容?


你的Notes字段里有空值吗? - Bill
1个回答

8

当你使用NOT LIKE时,空值会被隐式排除。

你需要单独处理:

SELECT * 
  FROM `catalogues` 
 WHERE (notes NOT LIKE "%SUPPR%" 
        OR notes IS NULL);

也许你只是用它做举例而已... 数据库管理员和性能专家建议不要使用SELECT *

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接