Oracle nvl, nvl2, nullif 使用示範

NVL

    
nvl(expr1, expr2)
    

如果 expr1 是 null, 回傳 expr2, 否則回傳 expr1

註:expr1 和 expr2 可以是任何資料型態。 但如果它們的資料型態不同,會自動進行隱式轉換。 如果無法隱式轉換,會拋出錯誤。

範例輸出:
  
    select nvl('', 'r') from dual;
    ---
    r


NVL2

    
nvl2(expr1, expr2, expr3)
    

如果 expr1 是 null, 回傳 expr3, 否則回傳 expr2

註:expr1 可以是任何資料型態。expr2 和 expr3 可以是除了 LONG 以外的資料型態

範例輸出:
  
    select nvl2(null, 2, '3') from dual;
    ---
    3


NULLIF

    
nullif(expr1, expr2)
    

如果 expr1 等於 expr2 ,回傳 null, 否則回傳 expr1


註:expr1 不能是「null」,這樣會拋出錯誤,錯誤訊息:[42000][932] ORA-00932: inconsistent datatypes: expected - got CHAR Position: 14

範例輸出:
  
    select nullif('a', 'b') from dual;
    ---
    a



參考資料:
NVL
NVL2
NULLIF

留言