在我们平常的数据开发工作中,由于数据质量的问题或者是在数据关联的过程中,可能会出现字段内容为null值的情况,如果该字段需要展示或者是参与计算的话,怎么处理这些内容就很重要了,以下是我用到的SQL中对null值的处理,与大家分享。
一、hive数据库
hive里面对null值的处理用到的函数是COALESCE()和nvl()
1,COALESCE()
(1)函数格式与释义
COALESCE()函数
语法格式:COALESCE(expression_1,expression_2,expression_3......expression_n)
释义:依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。
(2)COALESCE()实战演练
将null值置为0
SELECT * FROM test.test_data ;
SELECT id,name,sex,COALESCE(sex,'0')
FROM test.test_data;
查询几个字段里面第一个非空的内容
SELECT *,COALESCE(sex,name,age)
FROM test.test_data
释义:
id为1,2,3的数据,sex不为空,所以查询出来是sex字段的值,id为4的数据,sex为空,name字段不为空,所以查询出来的是name字段的内容。
2,nvl()函数
(1)函数格式与释义
格式:nvl(expression_1,expression_2)
释义:如果表达式1的值为空,返回表达式2的值;如果表达式1的值不为空,返回表达式1的值。
注意:表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
(2)nvl()函数实战练习
查询语句:
SELECT *,nvl(sex,name)
FROM test.test_data
输出结果:
释义:
nvl()函数是如果表达式1为空,则返回表达式2的值,如果表达式1不为空,则返回表达式1的值
这里sex字段为表达式1,name字段为表达式2,结果则如图所示。
二、MySQL数据库
1,函数格式与释义
IFNULL() 函数
语法格式:IFNULL(表达式1,表达式2);
释义:如果 表达式1 不为NULL,则IFNULL函数返回 表达式1 ; 否则返回 表达式2 的结果。
注意:这里的表达式 两个参数可以是文字值或者表达式
2,实战演练
(1)当第一个表达式不为空,返回第一个表达式内容
SELECT ifnull('xiaoming','xiaohua');
(2)当第一个表达式为空,返回第二个表达式内容
SELECT IFNULL(NULL,'xiaohua') ;
(3)字段内容null值置为0
SELECT IFNULL(NULL,0) ;
如果想要判断整个字段的话,就将第一个表达式的位置换为需要置为0的字段就可以了。