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

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

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

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

结果如下:
NOT IN条件需要注意NULL的问题

但是当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的手册有如下的描述

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

参考

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

相关文章:

  • 2021-06-20
  • 2022-01-14
  • 2021-11-17
  • 2022-12-23
  • 2022-12-23
  • 2021-09-21
  • 2021-05-23
  • 2021-07-21
猜你喜欢
  • 2022-02-24
  • 2021-10-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2021-07-31
相关资源
相似解决方案