Oracle和MySQL如何判断是否为空或NULL

我的原创地址:https://dongkelun.com/2019/05/29/oracleAndMysqlNull/

前言

如题,本文总结Oracle和MySQL如何判断是否为空或NULL

1、Oracle

1.1 建表

CREATE TABLE TEST_NULL (
    ID VARCHAR2(100),
    NAME VARCHAR2(100)
) ;

1.2 INSERT

INSERT INTO TEST_NULL (ID, NAME) VALUES('001', '张三');
INSERT INTO TEST_NULL (ID, NAME) VALUES('', '');
INSERT INTO TEST_NULL (ID, NAME) VALUES(NULL, NULL);

1.3 查询

1.3.1 所有数据

SELECT * FROM  TEST_NULL 
image

可以看到INSERT时,''==NULL

1.3.2 为空(NULL)的数据

只能用IS NULL

SELECT * FROM  TEST_NULL WHERE NAME IS NULL
image

用='' 或者=' '都不行

image
image

1.3.3 不为空(NULL)的数据

IS NOT NULL 和 !=' '都可以
以下等价

SELECT * FROM TEST_NULL WHERE NAME IS NOT NULL;
SELECT * FROM TEST_NULL WHERE NAME !=' ';
image

image

但是用!=''不行,和为空时是不一样的

image

2、MySQL

2.1 建表

CREATE TABLE TEST_NULL (
    ID VARCHAR(100),
    NAME VARCHAR(100)
) ;

注意:和Oracle不完全一样

2.2 INSERT

INSERT INTO TEST_NULL (ID, NAME) VALUES('001', '张三');
INSERT INTO TEST_NULL (ID, NAME) VALUES('', '');
INSERT INTO TEST_NULL (ID, NAME) VALUES(NULL, NULL);

2.3 查询

2.3.1 所有数据

SELECT * FROM  TEST_NULL 
image

可以看到MySQL ''和 NULL是不一样的

2.3.2 为NULL

IS NULL

SELECT * FROM TEST_NULL WHERE NAME IS NULL
image

2.3.3 为 ''

=''

SELECT * FROM TEST_NULL WHERE NAME =''
image

2.3.4 既不为空也不为NULL

SELECT * FROM TEST_NULL WHERE NAME !=''
image

这点和我想的不一样,也就是过滤不为空的时候把NULL也过滤掉了,没发单独过滤不为空的~~

2.3.5 不为NULL

SELECT * FROM TEST_NULL WHERE NAME IS NOT NULL
image

3、总结

大概总结一下(有点懒):
Oracle 最好用 IS NULL 和 IS NOT NULL
MySQL 最好用 ='' OR IS NULL 和 !=''

这主要是针对机器学习处理特征时过滤缺失值和异常数据,当然肯定还有其他需求,具体看上面两节讲的

每日英语

  • 1、lightweight 轻量级
  • 2、paradigm 范式 multi-paradigm 多范式
  • 3、oriented 面向 object-oriented 或 object oriented 面向对象的
  • 4、imperative 命令式,必要的
  • 5、prototype 原型 prototype-based 基于原型的

JavaScript is a prototype-based, multi-paradigm, dynamic language, supporting object-oriented, imperative, and declarative (e.g. functional programming) styles.
JavaScript 是一种基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格

相关文章

ed, imperative, and declarative (e.g. functional programming) styles.
JavaScript 是一种基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格

相关文章

  • MySQL和Oracle字符串截取函数用法总结(比较)

你可能感兴趣的:(Oracle和MySQL如何判断是否为空或NULL)