NOT IN条件需要注意NULL的问题

NOT IN条件需要注意NULL的问题

SQL中的NOT IN运算符是我们在开发中经常使用的一个操作符,使用它我们可以将选择的条件限定在指定的范围之内。NOT IN的条件使用简单方便,但是也有一些需要我们多加注意的点,今天在处理问题的时候,就遇到了一个前人留下来的坑,在此记录之,避免重蹈覆辙。
首先假设有如下的一个表:

我们通过如下sql进行查询是可以得到正确的结果的。

SELECT * FROM TEST_NULL where AGE NOT IN(0,2,5)

结果如下:

但是当NOT IN条件里面出现NULL就会出现意想不到的结果了,执行如下的sql就查不到任何的数据。

SELECT * FROM TEST_NULL where AGE NOT IN(0,2,5,null)

如果NOT IN里面的条件是一个子查询的结果也是一样的,当执行如下的sql也是查不到任何的数据的。

SELECT * FROM TEST_NULL where AGE  NOT IN(SELECT AGE FROM TEST_NULL WHERE ID <= 3)

查询oracle的手册有如下的描述

参考

  • Oracle® DatabaseSQL Language Reference 11g Release 2 (11.2) -- IN Condition

猜你喜欢

转载自www.cnblogs.com/ZiYangZhou/p/9345946.html