Oracle函数 COALESCE DECODE

本文介绍了SQL中COALESCE和DECODE函数的用法,展示了如何在查询中返回第一个非空值。通过案例,解释了当A列非空时返回A,否则返回B的查询方式,同时比较了CASE语句、COALESCE及DECODE函数的实现效果。此外,还提到了null值在算术运算中的特殊性质,即null与任何数的算术运算结果都是null。
摘要由CSDN通过智能技术生成

COALESCE:返回第一个非null的值

     如果都是null,则返回null

当有A、B两列,如果要求 A ≠ null  返回  A,否则返回B的值。

大家一般都是下面的写法:

-- tgt:创建测试用临时表tgt
WITH tgt AS (SELECT NULL A ,'222' B FROM dual)
SELECT 
	CASE 
		WHEN A <> NULL 
			THEN A
		ELSE B 
	END
FROM tgt

如果使用COALESCE 就会使sql简洁很多

WITH tgt AS (SELECT NULL A ,'222' B FROM dual)
SELECT COALESCE(A ,B) AS result FROM tgt

用函数decode也可以实现相同的结果

-- A = null:返回 B,否则返回A
WITH tgt AS (SELECT NULL  A ,'222' B FROM dual)
SELECT decode(A ,NULL ,B,A) AS result FROM tgt

 

-- A = null:返回 B,否则返回A
WITH tgt AS (SELECT 111  A ,'222' B FROM dual)
SELECT decode(A ,NULL ,B,A) AS result FROM tgt

 

 

注意:null * + - / (加减乘除)任何数都是null

SELECT COALESCE(NULL ,null) + 2  AS addition FROM dual
SELECT COALESCE(NULL ,null) - 2  AS subtraction FROM dual
SELECT COALESCE(NULL ,null) * 2  AS multiplication FROM dual
SELECT COALESCE(NULL ,null) / 2  AS division FROM dual

总结:DECODE:可以判定与任何值是否相等

           COALESCE:只能判断参数是否等于null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值