IN和NOT IN本质上都是OR运算,因而计算逻辑OR时处理NULL的方式不同,产生的结果也不同。

下面我们分析一下前面的三条语句

SQL> select deptno

2  from dept

3  where deptno in (10,50,null);

这里可以等价于where deptno=10 or deptno=50 or deptno=null,由于是or相连接,那么只要有一个条件为TRUE,整个就喂TRUE了。所以deptno为10的记录显示出来了。

SQL> select deptno

2  from dept

3  where deptno not in (10,50,null);

这里等价于where not (deptno=10 or deptno=50 or deptno=null),拿deptno=20的记录来举例吧。

not (20=10 or 20=50 or 20=null)

not(false or false or null)

not null

null

(以前只知道在where条件返回false的时候不成立,现在看来返回NULL的时候也不成立呀,下面是做的一个小实验可以证明这个猜想)

#####################

SQL> select * from dept

2  where 1=null;

no rows selected

#####################

SQL> select deptno

2  from dept

3  where deptno not in (10,50);

这里等价于where not (deptno=10 or deptno=50),依然拿deptno=20来举例。

not (20=10 or 20=50 )

not(false or false)

not false

true

注意:FALSE OR NULL=NULL ,而TRUE OR NULL=TRUE。

oracle的in集合,oracle中in与not in集合中有空值问题相关推荐

  1. 本地可以使用oracle吗,Oracle - PLS-00642:SQL语句中不允许使用本地集合类型

    我是ORACLE编程中的新手,我试图将表列值与传入的数组进行比较,并且我在此过程中遇到了相当令人沮丧的时间.Oracle - PLS-00642:SQL语句中不允许使用本地集合类型 这是来自包头的类型 ...

  2. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  3. Dataset:机器学习中常用数据集下载链接集合之详细攻略

    Dataset:机器学习中常用数据集下载链接集合之详细攻略 目录 机器学习中常用数据集下载链接集合之详细攻略 sklearn.datasets数据集所有csv文件集合 seaborn-data数据集所 ...

  4. python中的集合set类型是可变的吗_[Python] Python数据类型(三)集合类型之set集合和frozenset集合...

    1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 .  1.python中提供了两种内置的集合类型:可变的set类型和固定的 ...

  5. php redis set集合操作,php对redis的set(集合)操作

    <?phprequire ('redistest.php');/*** Class setcache*集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等,由于集合类型在Redis ...

  6. Python集合类型详解(一)——集合定义与集合操作符

    今天继续给大家介绍Python相关知识,本文主要内容是Python集合类型定义与集合操作符. 一.集合类型定义 在Python中,集合是一种非常重要的组合数据类型.Python中的集合与数学中的集合非 ...

  7. [Python] Python数据类型(三)集合类型之set集合和frozenset集合

    1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 . 1.python中提供了两种内置的集合类型:可变的set类型和固定的f ...

  8. java集合和数组随你转换_java集合和数组互转

    方法一:使用Arrays.asList()方法 String[] strs = {"one","two","three"}; List st ...

  9. oracle有索引的集合,oracle中记录和集合

    * oracle复合数据类型 PL/SQL有两种复合数据结构:记录和集合.记录由不同的域组成,集合由不同的元素组成. */ /* 一.记录类型 类似C语言中的结构,有两种定义方式:显式定义和隐式定义. ...

  10. 数据集合 oracle,oracle集合

    oracle集合 1初识集合 集合是oracle中的一种数据类型 存放一组数据类型相同的数据 集合组成 由下标和值组成 下标的类型包含数字(整数,pls_integer,binary_integer) ...

最新文章

  1. 艾伟:FCKeditor 配置、扩展
  2. 逆袭!BCH交易超越BTC
  3. linux nm工具 查看静动态库导出函数
  4. aop拦截mybatis执行sql_Java进阶架构之开源框架面试题系列:Spring+SpringMVC+MyBatis
  5. 新一代Notebook神器出现,Jupyter危险了!
  6. CRM and Saptest1 Fiori UI共存的一个典型例子
  7. 前端学习(2433):创建页面组件
  8. 论文浅尝 | 面向多语言语义解析的神经网络框架
  9. 关于Context []startup failed due to previous errors
  10. windows中mysql5.7中配置中文字符集和默认datadir
  11. 微信小程序-强制手机端更新
  12. 瑞泰信息携手大族数控,打造营销服务管理平台,夯实领先地位
  13. 《游戏学习》java实现连珠五子棋完整代码
  14. 项目管理:如何制作项目进度表
  15. REST Assured 使用详解
  16. HE4484E芯片资料
  17. POJ 1877 Flooded! G++
  18. elasticsearch通过logstash同步mysql数据(中文分词)
  19. ChatGPT介绍以及一些使用案例
  20. 计算机按键去抖动的方式,键盘去抖动原则和方法

热门文章

  1. 2020 年开发者生态报告:Python超越Java,Go、Kotlin强势崛起
  2. 深入理解Java中的volatile关键字
  3. 37岁程序员被裁,120天没找到工作,面试华为阿里均被拒,无奈降薪去小公司后懵了...
  4. linux下使用free命令查看实际内存占用(可用内存)
  5. jQuery动态增加表格一行和删除一行
  6. oracle 远程连接超时问题
  7. 业务场景下数据采集机制和策略
  8. Spring 框架基础(03):核心思想 IOC 编程说明,案例演示
  9. vue 1.0源代码重点难点分析
  10. Java 中 @Autowired与@Resource的区别