程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中的Decode和nvl函數的用法及區別?

Oracle中的Decode和nvl函數的用法及區別?

編輯:Oracle教程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved