1. 程式人生 > >DB2中的NVL和NVL2函數

DB2中的NVL和NVL2函數

class 例子 source 數據 日期 sel 必須 sql nvl2

NVL函數是一個空值轉換函數

NVL(表達式1,表達式2)

如果表達式1為空值,NVL返回值為表達式2的值,否則返回表達式1的值。
該函數的目的是把一個空值(null)轉換成一個實際的值。其表達式的值可以是數字型、字符型和日期型。但是表達式1和表達式2的數據類型必須為同一個類型。

  • 對數字型:NVL( a,0);
  • 對字符型:NVL(TO_CHAR(a), ‘zifeiy‘)
  • 對日期型:NVL(mydate,‘31-DEC-99‘)

實用例子:
查詢某個員工年薪,如果為空則用0代替

select (sal+nvl(comm,0))*12 from emp where emp.pno=:pno;

這裏,comm是未定義的變量,代指數字類型。 nvl返回為0。

NVL2(表達式1,表達式2,表達式3)

如果表達式1為空,返回值為表達式3的值。如果表達式1不為空,返回值為表達式2的值。
例如:

NVL2(comm,‘sal+comm‘,sal)

NVL2函數測試comm
如果comm為空,就返回sal 的值。如果 comm 不為空(null),就返回表達式 sal+comm的值。

DB2中的NVL和NVL2函數