NVL、NVL2、NULLIF与COALESCE都是处理当前字段值为空时候的转换函数。接下来我们对这几个函数进行介绍。
基本语法:
NVL(表达式1,表达式2)
含义:
如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。
该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型,表达式1和表达式2的数据类型必须为同一个类型。举例如下:
示例1:
SELECT D.EMPNO,D.COMM, NVL(COMM,200) FROM SCOTT.EMP D;
示例2:
select ename,NVL(TO_char(comm),ename||' is not a salesperson!') AS COMMISSION from emp
基本语法:
NVL2(表达式1,表达式2,表达式3)
含义:
如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。
例如 NVL2(comm,sal+comm,sal)
NVL2函数测试comm,如果comm为空,就返回sal 的值。如果 comm 不为空(null),就返回表达式 sal+comm的值。
示例:
SELECT D.EMPNO, COMM, SAL,NVL2(COMM, SAL + COMM, SAL) FROM SCOTT.EMP D;
基本语法:
NULLIF(表达式1,表达式2)
含义:
如果第一个表达式和第二个表达式的内容相同,那么返回NULL,否则,返回第一个表达式的值。
示例:
SELECT ENAME,NULLIF(LENGTH(ENAME),5) FROM SCOTT.EMP D;
基本语法:
COALESCE(列名,表达式1,表达式2,…,表达式n)
含义:
该函数用来匹配多个字段的值。如果表达式1的值为NULL,那么显示表达式2的值,如果表达式2的值也为空,那么显示表达式3的值,依次类推。
与NVL相比,COALESCE的优点在于可以同时处理交替的多个值。
返回参数列表中第一个非空表达式。
最后一个参数通常会是一个常量。
参数可以有多个,最少有一个,可以全是NULL。
示例:
SELECT D.MGR,COALESCE(MGR,NULL),D.COMM,D.EMPNO,COALESCE(MGR,COMM,88) FROM SCOTT.EMP D;
参考链接:https://mp.weixin.qq.com/s?src=11×tamp=1700101452&ver=4899&signature=vZxuQfufsBkMZRuLhXCyKUqPIkJ7dYfBrybznfof9U8HRNnbGD43JykxGjja7Q3yuxLmuQSIwB-meC9ELNj25KLgaIOsamUiElrg7UZzLKufki4gIwpU4cqctaDNv4&new=1