本文將演示Oracle中的NVL和NVL2函數(shù)的用法。
功能
NVL(x,value)
如果x為空蛆楞,返回value豹爹,否則返回x
NVL2(x,value1,value2)
如果x非空臂聋,返回value1或南,否則返回value2
下面將結(jié)合實例對這兩個函數(shù)進(jìn)行介紹肄方。
lNVL(x,value)
如果x為空权她,返回value,否則返回x拾徙。
示例1:對工資SAL是1500元以下的員工尼啡,如果沒有發(fā)獎金狂巢,每人獎金200元。
SQL> SELECT ENAME,JOB,SAL,COMM,NVL(COMM,200) FROM EMP WHERE SAL<1500;
ENAME ?????JOB ?????????????SAL ??????COMM NVL(COMM,200)
---------- --------- ---------- ---------- -------------
SMITH ?????CLERK ???????????800 ?????????????????????200
WARD ??????SALESMAN ???????1250 ???????500 ??????????500
MARTIN ????SALESMAN ???????1250 ??????1400 ?????????1400
ADAMS ?????CLERK ??????????1100 ?????????????????????200
JAMES ?????CLERK ???????????950 ?????????????????????200
MILLER ????CLERK ??????????1300 ?????????????????????200
已選擇6行斩个。
lNVL2(x,value1,value2)
如果x非空,返回value1滚局,否則返回value2。
示例2:對EMP表中工資為1500元以下的員工莺奸,如果沒有獎金,則獎金為200元甚疟,如果有獎金,則在原來的獎金基礎(chǔ)上加100元逃延。
SQL> SELECT ENAME,JOB,SAL,COMM,NVL2(COMM,200,100) FROM EMP WHERE SAL<1500;
ENAME ?????JOB ?????????????SAL ??????COMM NVL2(COMM,200,100)
---------- --------- ---------- ---------- ------------------
SMITH ?????CLERK ???????????800 ??????????????????????????100
WARD ??????SALESMAN ???????1250 ???????500 ???????????????200
MARTIN ????SALESMAN ???????1250 ??????1400 ???????????????200
ADAMS ?????CLERK ??????????1100 ??????????????????????????100
JAMES ?????CLERK ???????????950 ??????????????????????????100
MILLER ????CLERK ??????????1300 ??????????????????????????100
已選擇6行览妖。