暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

伦少的博客 2021-12-01
1736

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

前言

如题,本文总结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 (IDNAMEVALUES('001''张三');
2INSERT INTO TEST_NULL (IDNAMEVALUES('''');
3INSERT INTO TEST_NULL (IDNAMEVALUES(NULLNULL);

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 (IDNAMEVALUES('001''张三');
2INSERT INTO TEST_NULL (IDNAMEVALUES('''');
3INSERT INTO TEST_NULL (IDNAMEVALUES(NULLNULL);

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论