点击上方'伦少的博客'关注与您一起成长

前言
如题,本文总结Oracle和MySQL如何判断是否为空或NULL
1、Oracle
1.1 建表
1CREATE TABLE TEST_NULL (
2 ID VARCHAR2(100),
3 NAME VARCHAR2(100)
4) ;
1.2 INSERT
1INSERT INTO TEST_NULL (ID, NAME) VALUES('001', '张三');
2INSERT INTO TEST_NULL (ID, NAME) VALUES('', '');
3INSERT INTO TEST_NULL (ID, NAME) VALUES(NULL, NULL);
1.3 查询
1.3.1 所有数据
1SELECT * FROM TEST_NULL

可以看到INSERT时,''==NULL
1.3.2 为空(NULL)的数据
只能用IS NULL
1SELECT * FROM TEST_NULL WHERE NAME IS NULL

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


1.3.3 不为空(NULL)的数据
IS NOT NULL 和 !=' '都可以
以下等价
1SELECT * FROM TEST_NULL WHERE NAME IS NOT NULL;
2SELECT * FROM TEST_NULL WHERE NAME !=' ';


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

2、MySQL
2.1 建表
1CREATE TABLE TEST_NULL (
2 ID VARCHAR(100),
3 NAME VARCHAR(100)
4) ;
注意:和Oracle不完全一样
2.2 INSERT
1INSERT INTO TEST_NULL (ID, NAME) VALUES('001', '张三');
2INSERT INTO TEST_NULL (ID, NAME) VALUES('', '');
3INSERT INTO TEST_NULL (ID, NAME) VALUES(NULL, NULL);
2.3 查询
2.3.1 所有数据
1SELECT * FROM TEST_NULL

可以看到MySQL ''和 NULL是不一样的
2.3.2 为NULL
IS NULL
1SELECT * FROM TEST_NULL WHERE NAME IS NULL

2.3.3 为 ''
=''
1SELECT * FROM TEST_NULL WHERE NAME =''

2.3.4 既不为空也不为NULL
1SELECT * FROM TEST_NULL WHERE NAME !=''

这点和我想的不一样,也就是过滤不为空的时候把NULL也过滤掉了,没法单独过滤不为空的~~
2.3.5 不为NULL
1SELECT * FROM TEST_NULL WHERE NAME IS NOT NULL

3、总结
大概总结一下(有点懒):
Oracle 最好用 IS NULL 和 IS NOT NULL
MySQL 最好用 ='' OR IS NULL 和 !=''
这主要是针对机器学习处理特征时过滤缺失值和异常数据,当然肯定还有其他需求,具体看上面两节讲的
相关文章
关注我
文章转载自伦少的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




