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

6 篇文章 0 订阅

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值