为何not in的筛选条件中不可以存在空值

2023-11-18

开发工具与关键技术:Oracle sql*plus 、 PLSQL Developer
作者:吴晓佩
撰写时间:2019年4月6日

上次我在子查询中用多行操作符(not in)进行数据查询时出现过此种情况,数据是空的,为了验证一下结果,我用in 查询了该表的数据,发现查询出来的结果数据并没有等于该表的总数据,所以not in一定是会存在数据的,然而数据竟然是null。

原因是条件中存在一个空值,我刚开始知道查询的数据里存在空值,但是没有去在意,因为按我们正常的思维来想不等于空值也用该是可行的才对的(刷掉字段不在这里面的数据,空值也可以理解为不是空值的,而我需要的数据里面也本就不应该存在空值的),下面就是有空值与去掉空值查询出来的结果。

图(1)子查询中存在空值,查询结果没有数据。
在这里插入图片描述
图(1)

图(2)利用where过滤掉空值,查询出如下数据。
在这里插入图片描述
图(2)
in理解:例如department_id in (123,99,null)我们可以看作是(department_id =123 or department_id=99 or department_id=null)把department_id满足此处任一条件的数据都查询出来。

Not in 理解:基于in的理解, department_id in (123,99,null)即可看作是not(department_id =123 or department_id=99 or department_id=null),满足括号的所有条件, 进一步理解为(department_id !=123 and department_id!=99 and department_id!=null) 而department_id!=null一直会是等于false,所以查询出来的数据是空值。

所以我们在用not in进行数据过滤的时候一定要注意空值,无论你查询出来的数据中是否存在空值,都最好用is not null来处理一下,如图(2)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为何not in的筛选条件中不可以存在空值 的相关文章

  • 软件测试工程师自我介绍(范本)

    一 先介绍自己的基本信息 要注意扬长避短 1 年纪太大与太小 就不要主动去说明 比如你的年纪只有20岁 例子 我叫 从事软件测试工作有几年了 2 不是计算机相关专业毕业的也不要过多的去提 比如你的专业是机械专业 例子 我叫 从事软件测试工作
  • python selenium 滑动验证码

    def png from PIL import Image img Image open 1 png z img size data img convert RGB load for i in range z 0 dd for e in r
  • 【CMD】执行adb devices找不到设备的问题

    首先描述一下当时遇到的情况 手机USB连接电脑提示正常 设备管理器显示手机设备正常 问题是执行命令adb devices找不到设备 在Windows系统 资源管理器下 找到Android Sdk路径打开 看看那个文件夹platform to
  • spring的jdbcTemplate批量添加数据,单条数据中文正常,多数据第二条数据开始中文乱码

    今天用spring的jdbcTemplate org springframework jdbc core JdbcTemplate 批量添加数据 方法是jdbcTemplate bathUpdate 然后遇到一个很神奇的问题 批量添加的数据
  • 【精】彻底吃透HDFS写流程(5)-- DataStreamer线程类run方法分析以及如何构建pipeline?

    有关HDFS写流程的系列文章 精 彻底吃透HDFS写流程 1 BlockConstructionStage 精 彻底吃透HDFS写流程 2 Namenode侧create文件 精 彻底吃透HDFS写流程 3 DataStreamer线程和输
  • Android Studio及JDK完整详细安装

    本博文源于安卓基础旨在讨论如何搭建Android开发环境 下面进入步骤 了解安卓开发需要的工具 安装步骤 安装文件的下载 JDK的安装 Android Studio的安装与Android SDK的下载 基本开发的环境配置 安装文件的准备 首
  • 还是 “月饼” 后续,玩转炫彩 “月饼” 之 问题说明

    画一个 月饼 陪我过中秋 开发板后续问题跟进说明 目录 前言 一 出现问题 二 寻求办法 三 若有所思 四 问题测试 结语 悬赏送开发板 前言 本文有纯理论玩家是永远不会经历的实际问题 嵌入式工程师不动手永远出不了作品 本文最后有送开发板的
  • sqoop初步使用

    一 概述 Sqoop是一款开源的数据导入导出工具 可以将传统的关系型数据库导出至HDFS 也可以将HDFS中的数据导出至关系型数据库 官网 http sqoop apache org 原理 在Hadoop生态体系中 计算基本依赖于MR 那么
  • PHP如何使用Ds\Queue Capacity()函数?代码实例

    Ds Queue capacity PHP中的函数用于检查Queue实例的当前容量 语法 int public Ds PriorityQueue capacity void 参数 此功能不接受任何参数 返回值 此函数返回Queue实例的当前
  • stata学习笔记

    离散被解释变量 二值选择型 二值选择模型 多值选择型 多项选择模型 条件选择 混合 排序数据 排序模型 非负整数计数型 泊松 负二项 二值选择型 采用logit和probit模型 probit即把logit换一下就好 logit y x1
  • Dubbo源码分析-服务导出源码解析(三)

    在这个版本中dubbo会通过注解 PostConstruct把ServiceBean实例放到ConfigManager中 public abstract class AbstractConfig implements Serializabl
  • C++11 删除 字符串中的空格

    include
  • android 反射机制和反射调用方法

    对于android 中很多类没有开放出来 考虑到这些API不稳定 后续有可能会更改 所有没有在SDK中暴露出来给用户使用 但是我们在开放的过程中还是需要使用到一些android 系统中未开放出来的class 这时候我们就可以通过反射机制来调
  • 商品期货手续费一般是万分之十以内(商品期货手续费一般是万分之十以内吗)

    商品期货手续费一般 商品期货手续费普遍是极端之十以内 普遍是极端之10以内 简直看期货公司收取规范 普遍每个期货公司规范纷歧 海内四家期货买卖所颁布贬低一切期货买卖种类的手续费规范 各种类降费比率从12 5 到50 不等 期货买卖所手续费水
  • websocket的属性readyState

    websocket的属性readyState webSocket的readyState属性用来定义连接状态 该属性的值有下面几种 0 对应常量CONNECTING numeric value 0 正在建立连接连接 还没有完成 The con
  • MultipartFile上传文件报文件不存在的几种情况

    首先先了解一下从上传到保存整个流程是怎样的 然后在举几个文件不存在的例子 前端传进来一个文件 spring把文件保存到临时目录里 也就是 tmp tomcat 文件夹里 这个目录是在程序启动时创建的 目录也可以自定义 临时文件是 tmp结尾
  • matlab2019a中LSTM网络使用方法及源码示例(Deep Learning Toolbox系列篇6)

    此示例说明如何使用长短期记忆 LSTM 网络对序列数据进行分类 要训练深度神经网络以对序列数据进行分类 可以使用 LSTM 网络 LSTM 网络允许您将序列数据输入网络 并根据序列数据的各个时间步进行预测 此示例使用 1 和 2 中所述的日
  • 滑动指示器导航源码html+css

  • 深入理解react native布局(一)居中

    刚刚做完了一个项目 基本上把react native各种布局方式都用上了 发现了很多坑 也学会和很多 这里给大家分享一下哈 首先我们要有个概念 react native里面是兼容大部分我们在css里面用到的布局方式 此外接触过css里面fl
  • unity透明shader

    Shader Custom AlphaSelfIllum Properties Color Main Color Color 1 1 1 0 SpecColor Spec Color Color 1 1 1 1 Emission Emmis

随机推荐