开发者社区 问答 正文

MySQL比较具有空值?mysql

我在MySQL表中有一个名为CODE的列,该列可以为NULL。假设我有一些带有CODE ='C'的行,我想在选择的结果集中忽略它们。我的结果集中可以有CODE = NULL或CODE!='C'。

以下查询不返回CODE为NULL的行:

SELECT * from TABLE where CODE!='C' 但是此查询按预期工作,我知道这是正确的方法。

SELECT * from TABLE where CODE IS NULL OR CODE!='C' 我的问题是为什么只有CODE!='C'不会返回CODE = NULL的行?绝对“ C”不是NULL。我们在这里将无值与字符进行比较。有人可以解释一下为什么它不能那样工作吗?

展开
收起
保持可爱mmm 2020-05-17 17:47:09 549 分享 版权
1 条回答
写回答
取消 提交回答
  • 在MySQL中,NULL与没有值相反,它被视为“缺少的未知值”。看一下有关NULL的MySQL参考。

    与的任何算术比较NULL都不会返回true或false,而是返回NULL.。因此,NULL != 'C'返回NULL,而不是返回true。

    与“ NULL”的任何算术比较将返回false。要在SQL中进行检查:

    SELECT IF(NULL=123,'true','false') 要检查NULL值,我们需要使用IS NULL&IS NOT NULL运算符。来源:stack overflow

    2020-05-17 17:58:44
    赞同 展开评论