当前位置:  开发笔记 > 后端 > 正文

如果字段为空,为什么SQL"NOT IN('val1')"不返回?

如何解决《如果字段为空,为什么SQL"NOTIN('val1')"不返回?》经验,为你挑选了1个好方法。

我有一个像这样的查询:

Select *
FROM table1
WHERE field1 NOT IN ('value1')

如果该field1行是null,则不会返回.它对我来说看起来不合逻辑,因为null它不是'value1',所以应返回该行,这可能会导致许多错误.我明白,由于某些原因,它的工作方式如此.这些是什么?



1> Amadan..:

NULL在SQL中,A 不是值.

SELECT NULL = NULL
# => NULL
SELECT NULL != NULL
# => NULL

从而,

原因null不是'value1'

NULL也不是没有 "VALUE1".NULL基本上是说"我不知道"的SQL方式.所以它可能是'value1',或者它可能不是.测试的方法NULL

SELECT NULL IS NULL;
# => 1

因此,试试这个:

WHERE field1 NOT IN ('value1') OR field1 IS NULL

专门处理此案.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有