`

oracle中not in null 查询空值

阅读更多

在工作中执行以下SQL:

Select   *   from   table1 A  where  A.col1  not   in  (  select  col1  from  table2 B )

 

发现当B表中存在col1字段为空的数据时, 查询结果集是空。

在网上查询了一番,原来真的存在这个问题:

举例说明:     5 not in ('2','3','4',' ')   等价于 not (false or false or false or null)

=> not  null   即 查询不出结果集来。

 

所以如果非要用not in :

Select   *   from   table1 A  where  A.col1  not   in  (  select  col1  from  table2 B  where  B.col1  is   not   null  )

 

具体分析可以参考:

http://x-spirit.iteye.com/blog/615603

分享到:
评论

相关推荐

    有关于oracle数据库的sql优化

    目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句: select * from employee where last_name like '%cliton%'; 这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用...

    ORACLE数据库sql语言 、函数及常用命令

    如果一个列允许为空,该列可以不放任何内容,即空值(在SQL中书写为NULL),空值不是空格。 如果一个列内容为空值,则该列不等于任何值(包括空值)。 例如:列SAGE1、SAGE2的内容为空,列SAGE3内容为20,则下面的...

    Oracle数据库、SQL

    2.5空值null的处理 5 2.6 nvl(p1,p2)函数 5 2.7拼接运算符 || 6 2.8文字字符串 6 2.9消除重复行 6 2.10其他注意事项 6 三、 SQL语句的处理过程 7 3.1 SQL语句处理过程 7 3.2处理一条select语句 7 四、 where子句 8 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    ORACLE用户是学习ORACLE数据库中的基础知识,下面就介绍下类系统常用的默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)。拥有dba,sysdba,sysoper等角色或权限。是oracle权限最高的用户,...

    Oracle复合索引与空值的索引使用问题小结

    --A,B都没有not null约束,A列无空值,B列有空值。--存在复合索引IX_TEST(A,B) 于是手动测试,环境采用Oracle自带的scott用户下的emp表。 1.首先查看如下语句的执行计划(此时表只有主键索引): 2.添加IX_TEST...

    Oracle_Database_11g完全参考手册.part3/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle_Database_11g完全参考手册.part2/3

    《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...

    Oracle练习笔试大全

    Oracle练习笔试大全 1、select ename, sal * 12 from emp; //计算年薪 2、select 2*3 from dual; //计算一个比较纯的数据用dual表 3、select sysdate from dual; //查看当前的系统时间 4、select ename, sal*12 ...

    Oracle表的各种操作.docx

    另外,除NOT NULL约束外,新列不会继承源列的所有约束。 5、在表中添加一列时,不能指定该列的位置,它会被默认放置在最后。可以为一列增加长度。 通常当一列包含数据时,你不能修改该列的数据类型,不能减少一列的...

    oracle数据库经典题目

    1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须...

    2009达内SQL学习笔记

    用 NOT IN 时,有 NULL 则出错,必须排除空值再运算。 in :选择列表的条件 使用IN操作符的优点: 在长的选项清单时,语法直观; 计算的次序容易管理; 比 OR 操作符清单执行更快;最大优点是可以包含其他 SELECT ...

    Oracle 10g 开发与管理

    2.NOT NULL约束 29 3.Unique 约束 29 4.Foreign Key 约束 29 5.Check约束 (最复杂)列级 | 表级 29 第四讲 SQL基本查询 31 一. SQL语句概述 31 1. SQL简介 31 2. SQL分类 31 3. PL/SQL (Procedure Language) 31 二...

    oracle数据库笔记

    2.NOT NULL约束 29 3.Unique 约束 29 4.Foreign Key 约束 29 5.Check约束 (最复杂)列级 | 表级 29 第四讲 SQL基本查询 31 一. SQL语句概述 31 1. SQL简介 31 2. SQL分类 31 3. PL/SQL (Procedure Language) 31 二...

    SQL 优化原则

    目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句: select * from employee where last_name like '%cliton%'; 这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用...

    C#开发经验技巧宝典

    0892 如何应用IN查询表中的记录信息 524 0893 使用一个单行的子查询来更新列 524 0894 使用IN引入子查询限定查询范围 524 0895 在UPDATE语句中应用子查询 525 0896 如何应用子查询 525 0897 EXISTS与子...

    (E文)基于成本的Oracle优化法则.pdf

    9.3.6 Null和Notin 229 9.3.7 有序提示 231 9.4 星型变换连接 232 9.5 星型连接 237 9.6 展望 239 9.7 本章小结 240 9.8 测试用例 241 第10章 连接基数 243 10.1 基本的连接基数 244 10.2 实际SQL的连接基数 249 ...

    oracle创建表的方法和一些常用命令

    1、主键和外键主键:关系...注2:Oracle数据库共有5个约束:主键、外键、非空、唯一、条件非空:这个列的值不能为空(NOT NULL)唯一:这个列的值在表中是唯一存在的,不能重复,但可以为空值(NULL)条件:可以对列的

    mysql数据库的基本操作语法

    MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: ...

    SQL性能优化

     ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换...

    orcale常用命令

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_...

Global site tag (gtag.js) - Google Analytics