Hive nvl 和 coalesce 的使用

nvl 和 coalesce 说明

nvl 和 coalesce 是 HSQL  中常用的 空值处理函数,今天给大家聊聊这两个函数的使用细节、

数据准备

 先建表插入两条测试数据

create table temp.jc_test_coalesce_nvl
(
    c1 int,
    c2 int,
    c3 int,
    c4 int,
    c5 int
);
insert into temp.jc_test_coalesce_nvl values (null, 2, null, null, 5);
insert into temp.jc_test_coalesce_nvl values (1, null, 3, null, null);
select * from temp.jc_test_coalesce_nvl;

 

coalesce 

coalesce 函数语法为 coalesce(表达式1,表达式2....表达式n),coalesce函数的返回结果是第一个非空表达式,如果全是空则 返回 空.使用时需注意:所有表达式值是同一类型(转换同一类型亦可)。

select coalesce(c1, c2, c3, c4) null_1, coalesce(c1, c4) null_all
from temp.jc_test_coalesce_nvl;

 

nvl 函数

nvl 函数语法 nvl(默认值,表达式) 如果 默认值为不为空返回默认值,默认值为空 返回 表达式值,如果两者都为空 返回空:默认值,表达式 的值类型是同一类型(转换同一类型亦可)。

select nvl(c1, nvl(c2, nvl(c3, c4))) null_1, nvl(c1, c4) null_all
from temp.jc_test_coalesce_nvl;

  简单总结

  • nvl:如果第一个值非空取默认值,默认值是自己赋值上去的是个常数。支持两个参数。其本质是个函数。
  • coalesce:如果第一个参数为空就取第二个参数的值,第二个参数可以为常数也可以为表达式(字段,语句等)。以此类推,支持多个参数。更常用,其本质是个语句,更像个if语句,效率更高,建议使用。

 

posted @ 2022-01-25 17:43  晓枫的春天  阅读(4199)  评论(1编辑  收藏  举报