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