我有一个包含 2796 个条目的 mysql 表。我想选择注释字段中某处不包含单词 SUPPR 的条目。
如果我执行以下操作
SELECT * FROM `catalogues` WHERE notes LIKE "%SUPPR%"
它返回 266 行。但是如果我写下我认为的补充
SELECT * FROM `catalogues` WHERE notes not LIKE "%SUPPR%"
当我期望 2530 (2796-266) 时,它返回 762 行。
我应该如何写第二个请求才能得到我需要的东西?
最佳答案
当您使用 NOT LIKE
时,会隐式排除空值。
您单独处理:
SELECT *
FROM `catalogues`
WHERE (notes NOT LIKE "%SUPPR%"
OR notes IS NULL);
也许这只是为了说明目的,您使用它...
DBA 和性能爱好者建议不要使用 SELECT *
。
关于mysql 对 like 的否定没有返回预期的结果,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627448/