1. 程式人生 > >Oracle decode和nvl 函式的用法及區別?

Oracle decode和nvl 函式的用法及區別?

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