我有一个包含2796个条目的mysql表。我想在备注字段中的某处选择不包含单词SUPPR的条目。
如果我执行以下操作
SELECT * FROM `catalogues` WHERE notes LIKE "%SUPPR%"
它返回266行。但如果我写下我认为的补充
SELECT * FROM `catalogues` WHERE notes not LIKE "%SUPPR%"
当我期待2530(2796-266)时,它会返回762行。
我应该如何写第二个请求以获得我需要的东西?
答案 0 :(得分:7)
使用NOT LIKE
时,会隐式排除空值
你单独处理:
SELECT *
FROM `catalogues`
WHERE (notes NOT LIKE "%SUPPR%"
OR notes IS NULL);
也许这仅仅是出于说明目的而使用它...
DBA和性能增益建议不要使用SELECT *
。