一、概述
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/zh-hant/n/363821.html