【问题标题】:mysql negation of like doesn't return what expected, why?mysql对like的否定没有返回预期的结果,为什么?
【发布时间】:2011-07-08 16:24:42
【问题描述】:

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

如果我执行以下操作

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

它返回 266 行。但如果我写出我认为是补充的东西

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

当我期待 2530 (2796-266) 时,它返回 762 行。

我应该如何编写第二个请求来获得我需要的东西?

【问题讨论】:

  • 备注字段中有空值吗?

标签: mysql sql sql-like


【解决方案1】:

当您使用 NOT LIKE 时,会隐式排除 Null。
你分开处理:

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

也许这只是为了说明您使用它的目的......
DBA 和性能爱好者建议不要使用SELECT *

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多