`
cloudtech
  • 浏览: 4607163 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Oracle SQL NULL 值对 IN/NOT IN语句的影响

 
阅读更多

今天,有一个sql NOT IN语句,匹配条件里有一个null,结果什么都查不出来,同事觉得很难理解。其实只要明白一点就可以了,IN语句匹配的时候是用=,NOT IN匹配的时会用<>,就很容易理解了。

首先我们要知道,null在oracle是个特殊的东西,没有任何可比性,如果使用 =/<> 对比null,得到的始终是false。null 值只能用 is null/is not null来进行对比。

已知表table:

type value

SC 1

PO 4

BO 9

select * from table where type IN('SC',null);

这句话就相当于:select * from table where type='SC' or type=null;

因为已经有 type='SC'匹配,而type=null没有可比性,可以认为被忽略了,所以在 IN 语句里的 null 可以认为没有意义。

select * from table where type NOT IN('SC',null);

这句话就相当于:select * from table where type!='SC' and type!=null;

因为 type!=null 返回的始终是false,整个查询语句不会匹配任何一条记录,所以NOT IN语句里的null会使查询没有任何结果。

分享到:
评论

相关推荐

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    NULL 博文链接:https://heisetoufa.iteye.com/blog/287301

    Oracle常用SQL语句复习

    NULL 博文链接:https://kong-bai.iteye.com/blog/645923

    oracle sql分页语句

    NULL 博文链接:https://yan578351314.iteye.com/blog/911307

    有关于oracle数据库的sql优化

     任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。  2. 联接列  对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表...

    oracle通过1条语句插入多个值的方法示例

    今天在实践过程中遇到一个问题, 我想往数据库插入多条数据时,使用了如下语句: insert into 表1 (字段1,字段2) values (1,2...ci_id varchar2(20) not null, stu_ids varchar2(100) ); create table pm_stu( stu_id

    Sql 语句详解

    全网最全的SQL 讲解,带实例描述 目录概要: 1. SQL 简介 3 2. SQL 语法 4 3. SQL SELECT 语句 5 4. SQL WHERE 子句 7 5. SQL AND & OR 运算符 8 6. SQL ORDER BY 子句 9 ...25. SQL NOT NULL 约束 31 ……

    Oracle高级sql学习与练习

    2、EXISTS和NOT EXISTS的使用 3、WITH字句 4、MERGE INFO 合并资料 5、层次查询(HIERARICAL RETRIVEL) 6、DECODE函数和行列互换 7、CASE表达式 8、ROWNUM-TOP-N分析 9、相关子查询和非相关子查询 10、增强GROUP BY...

    Oracle数据库、SQL

    三、 SQL语句的处理过程 7 3.1 SQL语句处理过程 7 3.2处理一条select语句 7 四、 where子句 8 4.1 where子句后面可以跟什么 8 4.2语法和执行顺序 8 4.3字符串是大小写敏感的,在比较时严格区分大小写 8 4.4 where...

    jsp + oracle分页简单实用

    java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //设置数据库连接字符串 strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb"; //连接数据库 sqlCon = java.sql....

    导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等

    &lt;br/&gt; 如表的定义为:&lt;br/&gt; prompt Create Table BBNACTIVEHISTORY&lt;br/&gt; CREATE TABLE test(&lt;br/&gt; USERID VARCHAR2(20) NOT NULL,&lt;br/&gt; SPUSERID VARCHAR2(30) NOT NULL,&lt;br/&gt; PRODUCTID VARCHAR2(20) NOT NULL,&lt;br/...

    Oracle PL/SQL语言初级教程

    NOT NULL约束 50 唯一性约束(Unique constraint) 51 外部键约束(Foreign key constraint) 53 延迟约束检验(Deferred Constraint Checking) 54 序列(Sequences) 54 索引(INDEXES) 55 6.Oracle数据库数据对象分析...

    SQL语句集锦.rar

    工作中常用的SQL + 超复杂SQL 交叉连接查询corss.txt 公交线路问题.txt 。。。。 充储过程--sql0.sql 分割字符串.txt 分布式查询.txt 分组排列进行更新.txt 别名.txt 动态SQL语句.txt 动态语句.txt 区分大小写.txt ...

    经典SQL语句大全

    select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’) 10、说明:两张关联表,删除主表中已经在副表中没有的信息 delete from table1 where not exists ( select * from table2 where table1....

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    Sqlserver2000经典脚本

    第06章&lt;br/&gt;│ │ 6.1.1 NULL对IN的查询的影响及解决示例.sql&lt;br/&gt;│ │ 6.1.2 各种联接的使用示例.sql&lt;br/&gt;│ │ 6.1.2 多表联结导致记录重复的示例.sql&lt;br/&gt;│ │ 6.1.3 使用UNION实现库存报表的示例.sql&lt;br/&gt;│ ...

    ch07 oracle的SQL语句优化

    NULL 博文链接:https://fangyong2006.iteye.com/blog/768250

    问题:oracle中插入分割时间的sql语句

    NULL 博文链接:https://googledave.iteye.com/blog/326706

    PL/SQL 基础.doc

    field2 type [NOT NULL][:=expr2], /*如果一个字段限定NOT NULL,那么它必须拥有一个初始值*/ ... /*所有没有初始化的字段都会初始为NULL*/ fieldn type [NOT NULL][:=exprn] ); 4. %ROWTYPE 返回一个基于...

    Oracle数据库Sql性能调优

    1.36 避免在索引列上使用IS NULL和IS NOT NULL 22 1.37 总是使用索引的第一个列 23 1.38 ORACLE内部操作 23 1.39 用UNION-ALL 替换UNION ( 如果有可能的话) 24 1.40 使用提示(HINTS) 25 1.41 用WHERE替代ORDER BY 25...

Global site tag (gtag.js) - Google Analytics