综合数据类型函数
NVL (expr1, expr2)
如果 expr1 为非空,就返回 expr1, 如果 expr1 为空返回 expr2,两个表达式的数据类型一定要相同。
NVL2 (expr1, expr2, expr3)
如果 expr1 为非空,就返回 expr2, 如果 expr1 为空返回 expr3
NULLIF (expr1, expr2)
如果 expr1 和 expr2 相同就返回空,否则返回 expr1
COALESCE (expr1, expr2, ..., exprn)
返回括号内第一个非空的值。
SQL> select ename,comm,nvl(comm,-1) from emp;
ENAME COMM NVL(COMM,-1)
-------------------- ----- ------------
SMITH -1
ALLEN 300 300
WARD 500 500
JONES -1
MARTIN 1400 1400
BLAKE -1
CLARK -1
KING -1
TURNER 0 0
JAMES -1
FORD -1
MILLER -1
有奖金就返回奖金,奖金为空就返回-1。
select sal+comm ,sal+nvl(comm,0),nvl2(comm,'工资加奖金','纯工资') "收入类别" from emp;
有奖金就返回‘ ‘ ‘ ’ 工资加奖金 ,奖金为空就返回 纯工资 。
select ename,nullif(ename,'KING') from emp;
ENAME NULLIF(ENA
-------------------- ----------
SMITH SMITH
ALLEN ALLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAKE BLAKE
CLARK CLARK
KING
TURNER TURNER
JAMES JAMES
FORD FORD
MILLER MILLER
如果员工的名称为 king 就返回空,否则返回自己的名字。
select COALESCE(comm,sal,100) "奖金" from emp;
如果有奖金就返回奖金,如果没有奖金就返回工资作为奖金,如果奖金和工资都为空就返回 100,起个别名叫做"奖金"。

扫描二维码关注我的微学堂
搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!





