zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    线程池和进程池
    初识数据库
    线程q
    event事件
    死锁和递归锁
    信号量
    PythonStudy——线程中的几种消息队列
    PythonStudy——GIL Global Interpreter Lock 全局解释器锁
    PythonStudy——异步回调
    PythonStudy——日志模块 logging
  • 原文地址:https://www.cnblogs.com/ZiYangZhou/p/9345946.html
Copyright © 2011-2022 走看看