hive教程:if()、coalesce()用于 null 值处理

提出问题

查询员工姓名,工资,奖金,工资与奖金的和

select ename,sal,comm,sal+comm as `总额` from emp

错误:查询结果中,当 comm 为 null 时,sal+comm 也为 null,这显然不是我们想要的结果

if()

if() 函数类似于java中的三目表达式

语法

if(expr1,expr2,expr3)

解释:如果 expr1表达式 的值为 true ,则返回 expr2 的值,如果 expr1表达式 的值为 false ,则返回 expr3 的值。

例子

select comm,if(comm is null,0,comm) from emp;

上题的正确答案

select ename,sal,if(comm is null,0,comm),sal+if(comm is null,0,comm) from emp

coalesce()

该函数用于 null 值处理

语法

COALESCE(value1,value2……,valuen)

解释:可以传入多个列名,从左到右判断是否为 null,返回第一个非空值;如果所有值都为NULL,那么返回 NULL

例子

select comm,COALESCE(comm,0) from emp;

上题的正确答案:

select ename,sal,COALESCE(comm,0),sal+COALESCE(comm,0) from emp

原文出处:/show_1IX3GYLdt6Av.html