这是描述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以符合合并行为时。
显然,合并版本要紧凑得多。
常见用途 优先选择- 通常在可以使用许多列表示一个值但一次只能使用一个列的情况下使用。
在这种情况下,通常以最具体或最详细的表示形式指定参数。可选参数仅当名称为null时,才会显示说明。SELECT COALESCE (name, description) as Product FROM Products
- 合并还可以用于提供一种传递可选参数的方式。
通常对于参数说$ 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