Decode與NVL和NVL2區別

2021-09-02 20:44:50 字數 736 閱讀 5189

decode(條件,值1,翻譯值1,值2,翻譯值2,...,預設值)    該函式與程式中的 if...else if...else 意義一樣

格式: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(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,即達到取較小值的目的。

nvl 函式和nvl2 函式

格式為 nvl string1,replace with 功能 如果string1為null,則nvl函式返回replace with的值,否則返回string1的值,如果兩個引數都為null 則返回null。注意事項 string1和replace with必須為同一資料型別,除非顯式的使用to ...

DB2中的NVL和NVL2函式

nvl函式是乙個空值轉換函式 nvl 表示式1,表示式2 如果表示式1為空值,nvl返回值為表示式2的值,否則返回表示式1的值。該函式的目的是把乙個空值 null 轉換成乙個實際的值。其表示式的值可以是數字型 字元型和日期型。但是表示式1和表示式2的資料型別必須為同乙個型別。實用例子 查詢某個員工年...

Oracle中nvl和nvl2這兩個函式的區別

1 nvl value1,value2 這個函式的意思是如果value1的值為null,那麼函式返回value2的值 如果value1不為空,那麼就返回value1的值。需要注意的是value1和value2要保持字段型別相同。2 nvl2 value1,value2,value3 這個函式的意思是...