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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM