一文读懂NVL和COALESCE函数

1. 基本知识

NVL和COALESCE都是用于处理NULL值的函数,但它们有一些关键区别

  • NVL
    只接受两个参数
    如果第一个参数为NULL,返回第二个参数,否则返回第一个参数
    语法:NVL(expr1, expr2)

  • COALESCE
    可以接受多个参数
    返回第一个非NULL的参数
    语法:COALESCE(expr1, expr2, ..., exprN)

特性NVLCOALESCE
参数数量只能接受两个参数可以接受多个参数
返回值如果第一个参数为NULL,返回第二个参数;否则返回第一个参数 返回第一个非NULL的参数
兼容性Oracle特有ANSI SQL标准
性能在简单情况下性能较好灵活处理多个条件
使用场景适合简单的NULL替代适合复杂的NULL替代情况

在大多数情况下,性能差异微乎其微,但使用COALESCE可能在处理多个条件时更灵活

2. Demo

假设有一个表 employees,包含 first_name 和 middle_name 字段

-- 使用 NVL
SELECT first_name, NVL(middle_name, 'N/A') AS middle_name
FROM employees;

-- 使用 COALESCE
SELECT first_name, COALESCE(middle_name, 'N/A', 'No middle name') AS middle_name
FROM employees;

示例输出

first_namemiddle_name
JohnN/A
JaneA.
AlexN/A

在上面的例子中,如果 middle_name 为NULL,NVL将其替换为 ‘N/A’,而COALESCE在提供多个替代值时会返回第一个非NULL值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值