`
cloudtech
  • 浏览: 4711137 次
  • 性别: 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会使查询没有任何结果。

分享到:
评论

相关推荐

    oraclesql判断值为空-Oracle-sqlserver的空值(null)判断.pdf

    Oracle SQL 判断值为空OrNull 判断 Oracle SQL 中判断值为空...在 Oracle 和 SQL Server 中,我们可以使用 `NVL` 和 `ISNULL` 函数来判断值为空或 Null,並使用 `isNull` 和 `is not null` 来判断值是否为空或 Null。

    Oracle——sql语句优化

    本文将深入探讨几种常见的SQL操作符及其优化方法,包括IN、NOT IN、、IS NULL、&gt;、&lt;、LIKE以及UNION等,旨在帮助数据库管理员和开发人员构建更为高效、响应迅速的应用系统。 #### IN操作符:灵活性与性能的平衡 IN...

    ORACLE常用SQL语句大全.pdf

    Oracle 常用 SQL 语句大全 本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 ...

    oracle 查看当前会话执行的sql语句

    ### Oracle 查看当前会话执行的SQL语句 在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看...

    Oracle高效SQL语句原则

    Oracle database 的优化器在遇到 is null 或 is not null 条件时,不会使用索引,这可能会导致 SQL 语句的执行效率下降。 4. 对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的 在编写 SQL ...

    SQL、pl/sql基础语句大全

    - **WHERE子句**:用于设定查询条件,支持多种比较运算符如`=`, `&gt;`, `, `&gt;=`, `, `&lt;&gt;`,以及`BETWEEN`(用于指定范围),`IN`(用于匹配多个值),`LIKE`(用于模糊查询,配合通配符 `%` 和 `_`),`IS NULL`...

    oracle中对null值的处理

    在Oracle数据库中,NULL值是一种特殊的值,表示未知或不存在的数据。它不同于任何其他值,包括空字符串('')和零。理解Oracle如何处理NULL值是数据库管理与查询中的重要一环,尤其对于数据完整性、查询逻辑以及函数...

    ORACLE SQL 语句(典型应用总结).pdf

    根据提供的文档信息,本文将对《ORACLE SQL 语句(典型应用总结)》中的关键知识点进行详细解读与总结。 ### 第一章 基本SELECT语句 #### 1. SQL语法要求 在Oracle中编写SQL语句时,需要注意以下几点: - **大小写...

    关于sql中求平均值出现null值的解决方案

    因此,当你在SQL中对包含null的列执行AVG函数时,结果也会是null,这可能并不是我们期望的结果。本文将详细探讨这个问题,并提供几种解决策略。 首先,我们需要理解SQL中的NULL概念。NULL并不等同于零或空字符串,...

    oracle的sql语句和语法

    本资料将重点介绍Oracle SQL语句和语法,适合初学者入门学习。 1. **SQL基础** - **SELECT语句**:用于从数据库中检索数据,是最常用的SQL语句。可以指定列名、表名、条件等,例如`SELECT column1, column2 FROM ...

    ORACLE__SQL语句教学

    Oracle SQL语句是数据库管理与查询的核心工具,用于从Oracle数据库中检索、更新和操作数据。本教程将介绍SQL SELECT语句的基本概念和用法,帮助你理解和掌握如何在Oracle环境中执行SQL查询。 首先,SQL SELECT语句...

    DBA对Oracle SQL编写规范的总结

    ### DBA对Oracle SQL编写规范的总结 #### 一、引言 在Oracle数据库开发过程中,遵循一套标准化的SQL编写规范对于提升代码质量、增强可读性和可维护性至关重要。本文档由一位经验丰富的数据库管理员(DBA)撰写,旨在...

    oracle SQL 语句插入数据

    下面我们将深入探讨Oracle SQL语句插入数据的相关知识点。 一、基本语法 Oracle SQL 插入数据的基本语法如下: ```sql INSERT INTO 表名 (列1, 列2, ..., 列n) VALUES (值1, 值2, ..., 值n); ``` 例如,如果我们有...

    Oracle数据库Sql语句详解大全.pptx

    Oracle 数据库 SQL 语句详解大全 本资源总结了 Oracle 数据库中 SQL 语句的详解大全,涵盖了 SELECT 查询、条件查询、运算符、空值处理、列别名、去重复行等多方面的知识点。 一、SELECT 查询 * 基本语法:SELECT...

    oracle SQL语法大全

    在WHERE子句中,可以使用比较运算符(如=、&lt;、&gt;、、&gt;=、)、逻辑运算符(AND、OR、NOT)以及 BETWEEN、IN、LIKE 和 IS NULL等特殊条件。 五、子查询 子查询是在SQL语句中嵌套的查询,可以返回单个值、多行单列或...

    oracle PL/SQL测试题目和详细答案

    ### Oracle PL/SQL测试题目与知识点解析 #### 一、选择题知识点解析 **1. Oracle数据库中为新创建的表分配的初始空间通常为多大?** - **知识点解析:** Oracle数据库为新创建的表分配的空间单位是“区”(Extent...

    Oracle SQL:经典练习题(附答案)

    在查询中,需要特别注意空值的影响,可以使用IS NULL或IS NOT NULL来检查字段是否为空,或者使用NVL()函数将空值替换为其他值。 通过这些练习,你可以逐步掌握Oracle SQL的基本操作,提高在实际工作中处理数据的...

    oracle SQL语句

    ### Oracle SQL语句详解 #### 一、SQL规范与注释 在Oracle SQL中,注释主要用于添加说明性文本,帮助理解SQL脚本的目的和功能。注释有两种基本形式: - **单行注释**:使用`--`,之后的所有内容被视为注释,直到...

Global site tag (gtag.js) - Google Analytics