【问题标题】:How can I exclude NULL of not equal operator?如何排除不等于运算符的 NULL?
【发布时间】:2016-08-28 00:36:34
【问题描述】:

在这部分查询中:

. . . WHERE col <> 10

它匹配除10NULL 之外的所有内容。虽然我想匹配除 10 之外的所有内容。那么我怎样才能排除NULL呢?

【问题讨论】:

  • col not in(10) 应该工作的地方
  • col 为 null 或 col 10;
  • @Satya 不,它不起作用。
  • @Priyanshu 是的,它有效。但是没有更好的解决方案吗?像&lt;=&gt; 这样的东西对null 是安全的。实际上你的问题很好,但它包含两个独立的条件。我喜欢在 1 个条件下做到这一点。

标签: mysql sql operators where-clause


【解决方案1】:

问题是条件col != 10(在 MySQL 中)表示“col 的值不是 10 的行”。 NULL 不是一个值,所以 NULL 行不匹配。如果是这样,您可能会遇到 NULLs 级联到您的逻辑的其他部分的问题,因为它们不使用与值相同的相等逻辑。

据我了解,在两种情况下执行此操作 (col IS NULL OR col != 10) 是正确的方法,因为根据 MySQL 逻辑,您需要两个不同的东西。 “col 的值不是 10 的行,或 col 没有值的行”。

【讨论】:

    【解决方案2】:

    这可以用于 MySQL,

    ...WHERE IFNULL(col,0) <> 10
    

    如果 col 的值为NULL,则IFNULL(col,0) 会将值转换为'0' 并执行比较。所以你会得到除了10之外的所有记录。

    【讨论】:

    【解决方案3】:

    试试这个 ....col 10 或 col 为空

    对于空值

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2012-09-03
      • 2016-07-29
      • 2014-03-22
      • 1970-01-01
      相关资源
      最近更新 更多