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语句,效率更高,建议使用。