问题背景:前段时间我在测试过程中上传一个文件,文件内容要求判断为空,结果出现了报错,跟踪原因发现是开发误将oracle中对null的判断方式写成了=null,下面梳理一下不同数据库对该问题的处理方法:

1、mysql

MySQL 中 null 不代表任务实际的值,类似于一个未知数。

2.执行对比

2.1 查询条件为 =null

执行之后,发现返回行数为0

2.2 查询条件为 is null

执行后发现返回行数为8

2.3两次查询的为何不同

null 在MySQL中不代表任何值,通过运算符是得不到任何结果的,因此只能用 is null(默认情况)

3、oracle

oracle中,判断一个字段或者一个变量是否为null 语法是 is null。返回的结果是boolean型
如果使用 = null,会返回null。如果在代码或语句中使用,可能会获取不到结果或者报错
另外,null并不表示不存在,而是未知,我们通常成为“UNKNOWN”

4、DB2

测试使用布尔值来判断与null的比较结果为false,因此column = null的计算结果为false以及column != null,与列的值无关。如果想实际检查一个值是否为空,必须使用column is null

结论:如果要判断是否为null,以上三种数据库都使用is null 或者is not null,只有表中真实存储为"null"时,才能用=null查到

常见数据库mysql、oracle和DB2中is null 和 =null 的区别的更多相关文章

  1. 从零写一个兼容MySQL/Oracle的Proxy中件间(一)《初识Oracle的通信协议》

    0.前言 MySQL由于开源的原因,有各式各样的中件间Proxy ,极大的丰富了做高可用或迁移的方案,习惯了MySQL生态圈的灵活和便利,Oracle官方不开源代码和协议,没有中间件proxy,显得很 ...

  2. Entity Framework 6 Code First +MVC5+MySql/Oracle使用过程中的几个问题

    1. namespace Snapsia.Web.Models { using System; using System.Data.Entity; using System.ComponentMode ...

  3. 【搜索引擎】Solr最新安装以及通过关系型数据库(MySQL,Oracle,PostgreSQL)导入数据

    版本号 最新的solr版本 : Solr 8.1.1下载地址:https://lucene.apache.org/solr/downloads.html solr-8.1.0.tgz for Linu ...

  4. Mysql/Oracle/达梦中数据字典表

    在mysql中,数据字典表存放在information_schema库中,,对应的两张表,分别是TABLES,和COLUMNS. 在oracle中有表空间(即用户空间或者库)和模式的概念.模式和表空间 ...

  5. mysql,oracle,sql server中的默认事务隔离级别查看,更改

    未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据) 已提交读(数据库引擎的默认级别) 可重复读 可序列化(隔离事务的最高级别,事务之间完全隔离) 可串行化比较严谨,级别高; MySQL m ...

  6. MySQL create table语法中的key与index的区别

    在create table的语句中,key和index混淆在一起,官方手册中的解释是这样: KEY is normally a synonym for INDEX. The key attribute ...

  7. oracle与DB2

    1.体系结构,DB2的实例和数据库分开的做法,我个人还是比较喜欢的,因为实例可以创建多个,数据库的恢复直接恢复到实例下就可以了,相对ORACLE简单多了. 2.管理工具,DB2的管理工具做得太简陋了, ...

  8. Oracle与DB2的区别

    系统结构概述 首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读 ...

  9. oracle与DB2的一些架构

    首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读本文的时候,为 ...

  10. CTE在Oracle和Sqlserver中使用的差异

    CTE是一个很好用的工具,他可以帮助我们清晰代码结构,减少临时表使用,同时oracle和sqlserver都提供支持.但在oracle和sqlserver中使用CTE也存在一定区别. Oracle使用 ...

随机推荐

  1. NOIP 口胡

    因为没准备啥东西 这两天口胡一下近年 NOIP 的题 大概会一道不落?没什么很寄的考点主要是 2021 T1 报数 打一个 \(O(\log n)\) 查询 \(n\) 中是否有 \(7\),打一个类 ...

  2. 【每日一题】【DFS/回溯】2022年1月1日-113. 路径总和 II

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 来源:力扣(LeetCode)链接 ...

  3. Map的遍历方式,常用的key-value遍历方式

    在开发过程中经常会遇到 map 的遍历,本文将会介绍四种常用的 key-value 遍历方式 说明: 增强 for 循环遍历 先取出 map 的 keySet,进行遍历,再取出对应 key 的 val ...

  4. 真正“搞”懂HTTP协议06之body的玩法(理论篇)

    本来啊,本来,本来我在准备完善这个鸽了四年的系列的时候,是打算按照时间的顺序来完成的,好吧.我承认那个时候考虑的稍稍稍稍稍微有些不足,就是我忽略了HTTP协议的"模块性".因为虽然 ...

  5. 秒懂 Golang 中的 条件变量(sync.Cond)

    本篇文章面向的读者: 已经基本掌握Go中的 协程(goroutine),通道(channel),互斥锁(sync.Mutex),读写锁(sync.RWMutex) 这些知识.如果对这些还不太懂,可以先 ...

  6. Ubuntu 22.04 LTS 安装 0.A.D 实时策略游戏 并汉化

    众所周知,Linux生态中,能玩的正儿八经的大型游戏其实没几个,而 0.A.D 这个游戏就是这其中之一.这是一个类似于帝国时代的实时策略游戏,开源跨平台,这是其官方网站:https://play0ad ...

  7. context状态树

    provider customer 父组件 创建context对象并导出 export const AddContext = React.createContext<any>({}) 导出 ...

  8. json提取器和beanshell处理器组合,将提取的所有id以数组返回

    1.添加json提取器 2.添加beanshell处理器,并编写脚本 String str1 = vars.get("buildid_ALL"); log.info(str1); ...

  9. Python实验报告(第13章)

    实验13:Pygame游戏编程 一.实验目的和要求 学会Pygame的基本应用 二.Pygame的优点及应用 使用Python进行游戏开发的首选模块就是Pygame,专为电子游戏设计(包括图像.声音) ...

  10. MassTransit | 基于StateMachine实现Saga编排式分布式事务

    什么是状态机 状态机作为一种程序开发范例,在实际的应用开发中有很多的应用场景,其中.NET 中的async/await 的核心底层实现就是基于状态机机制.状态机分为两种:有限状态机和无限状态机,本文介 ...