一、概述
SQL的COALESCE函数用于检索多个表达式,并返回第一个非null表达式的值。COALESCE函数可以用于选择最先返回非空值的列。这个函数的格式如下:
COALESCE(expr1, expr2, ... , expr_n)
其中,最多可以输入255个表达式,如果所有表达式均返回NULL,则COALESCE也返回NULL
二、优点
相对于使用CASE语句,COALESCE的优点在于可读性更好,更简单,更容易维护。举个例子,下面的查询语句可能是使用CASE语句的代码:
SELECT cost, CASE
WHEN cost IS NULL THEN materialcost
ELSE cost
END AS final_cost
FROM products
而使用COALESCE函数可以使用如下简单的代码:
SELECT COALESCE(cost, materialcost) AS final_cost
FROM products
三、场景
1. 列出不同表中共同列的值
在某些场景中,需要列出各个表共同具有的列中不同的值。例如下面的查询语句可以列出所有不同的颜色值:
SELECT DISTINCT COALESCE(a.color, b.color, c.color)
FROM table1 a
LEFT JOIN table2 b ON a.color = b.color
LEFT JOIN table3 c ON b.color = c.color
2. 处理null值
在处理null值时,可以使用COALESCE函数将其转换成想要的值。下面的查询语句可以将null值转换成0:
SELECT COALESCE(sales, 0) AS sales
FROM orders
四、示例代码
以下是使用COALESCE函数的示例代码:
SELECT COALESCE(cost, materialcost) AS final_cost
FROM products
WHERE productid = 1;
这条查询语句选择了一种命名为“final_cost”的新列,它将返回这些的productid的cost值或materialcost值(如果cost是null)。如果这两个cost字段均未包含任何值,则返回null。
原创文章,作者:OBTSS,如若转载,请注明出处:https://www.506064.com/n/363821.html