Oracle中的NVL、NVL2、NULLIF、COALESCE函数详解

NVL、NVL2、NULLIF与COALESCE都是处理当前字段值为空时候的转换函数。接下来我们对这几个函数进行介绍。

NVL函数

基本语法:
NVL(表达式1,表达式2)

含义:
如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。
该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型,表达式1和表达式2的数据类型必须为同一个类型。举例如下:

  • 对数字型: NVL( comm,0);
  • 对字符型: NVL( TO_CHAR(comm), ‘No Commission’)
  • 对日期型 :NVL(hiredate,’ 28-MAR-99’)

示例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函数

基本语法:
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函数

基本语法:
NULLIF(表达式1,表达式2)

含义:
如果第一个表达式和第二个表达式的内容相同,那么返回NULL,否则,返回第一个表达式的值。

示例:

SELECT ENAME,NULLIF(LENGTH(ENAME),5) FROM SCOTT.EMP D;

COALESCE函数

基本语法:
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&timestamp=1700101452&ver=4899&signature=vZxuQfufsBkMZRuLhXCyKUqPIkJ7dYfBrybznfof9U8HRNnbGD43JykxGjja7Q3yuxLmuQSIwB-meC9ELNj25KLgaIOsamUiElrg7UZzLKufki4gIwpU4cqctaDNv4&new=1

猜你喜欢

转载自blog.csdn.net/Ruishine/article/details/134436420
今日推荐