小编典典

为什么null不in(1,2,3)为false

sql

是否可以预期,当我测试列表中是否 没有 null值时,结果始终为false。

那是:

 select 'Hello world' where null not in(1,2,3);

不要选择任何内容,因为not in(1,2,3)中的null为false。

我不明白这一点,因为list(1,2,3)不包含任何未定义的值(null),所以我希望null in(1,2,3)中的null为true。那为什么是假的呢?


阅读 148

收藏
2021-05-30

共1个答案

小编典典

实际上null not in (1,2,3)返回null,而不是false,但它的工作方式 类似于
falsewhere子句(因为它不是true)。

空比较(a = null)等总是返回null,因为从null not in (1,2,3)本质上讲,它与以下内容相同:

NOT (null = 1 OR null = 2 OR null = 3)

返回值为null。最好的选择是进行显式的null检查,并分别处理这些情况。

旁注:由于NULL in (null, 1, 2, 3)returnnullnull = null将返回null

2021-05-30