Oracle decode和nvl 函式的用法及區別?
阿新 • • 發佈:2019-02-11
Decode
decode(條件,值1,翻譯值1,值2,翻譯值2,...,預設值) 該函式與程式中的 If...else if...else 意義一樣
NVL
格式:NVL( string1, replace_with)
功能:如果string1為NULL,則NVL函式返回replace_with的值,否則返回string1的值,如果兩個引數都為NULL ,則返回NULL。
注意事項:string1和replace_with必須為同一資料型別,除非顯式的使用TO_CHAR函式進行型別轉換。
select nvl(sum(t.dwxhl),1) from tb_jhde t 就表示如果sum(t.dwxhl) = NULL 就 返回 1
Oracle在NVL函式的功能上擴充套件,提供了NVL2函式
NVL2
nvl2 (E1, E2, E3) 的功能為:如果E1為NULL,則函式返回E3,否則返回E2
結合
Decode 和 NVL等函式 常常結合使用,例如
select monthid,decode(nvl(sale,6000),6000,'NG','OK') from output
sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1,
如果取較小值就是select monthid,decode(sign(sale-6000),-1,sale,6000) from output,即達到取較小值的目的。
原文連結:https://blog.csdn.net/xiaokui_wingfly/article/details/42525519