如何使用COALESCE SQL函数

这是描述sql合并函数的简短提示。

描述

COALESCE接受逗号分隔的参数列表并返回

该列表中第一个不为null的值;如果所有参数均为null,则为null。

从而

COALESCE (a1, a2, a3, ..., an)
如果a1不为null,则返回a1;如果a1为null但a2不为null,则返回a2,

a3如果a1,a2为空,但a3不为空,依此类推。

通过使用CASE可以实现相同的目的。 对于上面的CASE代码段

CASE WHEN (a1 IS NOT NULL) THEN a1
WHEN (a2 IS NOT NULL) THEN a2
WHEN (a3 IS NOT NULL) THEN a3
... 
WHEN (an IS NOT NULL) THEN an
ELSE NULL
请注意,最后的ELSE NULL可确保返回NULL

当所有参数都为null以符合合并行为时。

显然,合并版本要紧凑得多。

常见用途 优先选择
  • 通常在可以使用许多列表示一个值但一次只能使用一个列的情况下使用。
在这种情况下,通常以最具体或最详细的表示形式指定参数。
SELECT  COALESCE (name, description) as Product FROM Products 
仅当名称为null时,才会显示说明。
可选参数
  • 合并还可以用于提供一种传递可选参数的方式。
通常对于参数说$ P你会做
SELECT * FROM Products WHERE (name = '$P' OR $P IS NULL)
如果将参数$ P作为NULL传递,则将选择所有产品
选择名称为$ P的产品。 通过合并,可以执行以下操作:
SELECT * FROM Products WHERE (name  LIKE COALESCE($P, '%' ))
可移植性

此函数是ANSI标准函数,因此在大多数情况下可用

RDBM,通常比RDMS更适合使用

函数(例如SQL Server的ISNULL)。

希望这是有用的。

From: https://bytes.com/topic/software-development/insights/824186-how-use-coalesce-sql-function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值