NVL: Converts a null value to an actual value
NVL2:If expr1 is not null, NVL2 returns expr2. If expr1 is null, NVL2 returns expr3. The argument expr1 can have any data type.
NULLIF:Compares two expressions and returns null if they are equal; returns the first expression if they are not equal
COALESCE:Returns the first non-null expression in the expression list.

nvl(COMMISSION_PCT,0)
如果第一个参数为null,则返回第二个参数
如果第一个参数为非null,则返回第一个参数

SQL> select * from emp;

     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
1111 rusky clerk 7698 111 20 已选择15行。 SQL> select nvl(comm,0) from emp; NVL(COMM,0)
-----------
0
300
500
0
1400
0
0
0
0
0
0
0
0
0
111 已选择15行。 SQL>

NVL2(COMMISSION_PCT,'SAL_COMM','SAL')
如果第一个参数为null,则返回第三个参数
如果第一个参数为非null,则返回第二个参数

(例:如果奖金为空,则返回工资,如果奖金非空,则返回奖金与工资总和)

SQL> select nvl2(comm,comm+nvl(sal,0),nvl(sal,0)) from emp;

NVL2(COMM,COMM+NVL(SAL,0),NVL(SAL,0))
-------------------------------------
800
1900
1750
2975
2650
2850
2450
3000
5000
1500
1100
950
3000
1300
111 已选择15行。

nullif(expr1,expr2)

如果两个参数值相等,则返回 null
如果两个参数不等,则返回第一个表达式值

SQL> select nullif(to_char(hiredate,'YYYY'),'') from emp;

NULL
----
1980 1987 1987 1982 已选择15行。 SQL>

COALESCE(EXPR1,EXPR2,EXPR3...EXPRn)
从左往右数,遇到第一个非null值,则返回该非null值。多层判断

SQL> select coalesce(sal+comm,sal+nvl(comm,0),nvl(sal,0)+nvl(comm,0)) from emp;

COALESCE(SAL+COMM,SAL+NVL(COMM,0),NVL(SAL,0)+NVL(COMM,0))
---------------------------------------------------------
800
1900
1750
2975
2650
2850
2450
3000
5000
1500
1100
950
3000
1300
111 已选择15行。 SQL>

最新文章

  1. 25 highest paying companies: Which tech co outranks Google, Facebook and Microsoft?
  2. mysql在linux下的安装
  3. IOS 欢迎页(UIScrollView,UIPageControl)
  4. a different object with the same identifier,同一个session中存在不同的对象问题
  5. selenium+python自动化之CSS定位
  6. lintcode :Remove Duplicates from Sorted Array 删除排序数组中的重复数字
  7. Android 签名(5)用命令签名和用IDE签名
  8. ASP.NET实现年月日三级联动(局部刷新)
  9. 【翻译】五步快速使用LINQPad尝鲜StreamInsight
  10. 无法打开物理文件mdf,操作系统错误 5:"5(拒绝訪问。)"
  11. BZOJ 1079: [SCOI2008]着色方案(巧妙的dp)
  12. VMware Workstation 学习笔记
  13. windows10下Kafka环境搭建
  14. 基于DPDK的高效包处理系统
  15. es6(12)--类,对象
  16. [Word]让字符重合显示
  17. vue-cli 3.0 开启 Gzip 方法
  18. linux远程拷贝命令-scp
  19. easyui扩展
  20. Ubuntu下NAT模式配置静态IP

热门文章

  1. python - 类的字段
  2. IOS 请求服务器的方式
  3. QT5-控件-QComboBox
  4. CODEVS 3137 栈练习1
  5. git命令收集整理
  6. mysql下怎样运行脚本
  7. Codeforces 494D Upgrading Array
  8. 24C01的IIC 讀寫的c51程式
  9. paip.Adblock屏蔽onlinedown华军软件园的4秒下载广告总结..
  10. WiEngine+Eclipse+CDT+Sequoyah实现c++编程智能感知提示