COALESCE(expr1, expr2, ..., exprN) 回傳參數清單中第一個非 NULL 的運算式。若所有參數皆為 NULL,則回傳 NULL。它是 ANSI SQL 標準函數,等同於 CASE 運算式的簡寫形式。
假設 Persons 表包含 FirstName、MiddleName、LastName,需產生完整姓名:
SELECT FirstName + ' ' + COALESCE(MiddleName, '') + ' ' + COALESCE(LastName, '')
FROM Persons;
為避免中間名稱為 NULL 時產生雙重空格,可改用:
SELECT LTRIM(FirstName + ' ' + COALESCE(MiddleName + ' ', '')) + COALESCE(LastName, '')
FROM Persons;
進一步封裝為使用者定義函數 dbo.WholeName 供重複呼叫。
員工薪資可能為時薪、計件、週薪加提成等不同模式:
SELECT EmployeeID,
COALESCE(HourlyWage * HoursPerWeek, 0) +
COALESCE(AmountPerPiece * PiecesThisWeek, 0) +
COALESCE(WeeklySalary + CommissionThisWeek, 0) AS Payment
FROM PayDay;
將此邏輯定義為計算欄位 Payment,後續查詢直接讀取即可:
ALTER TABLE PayDay ADD Payment AS
COALESCE(HourlyWage * HoursPerWeek, 0) +
COALESCE(AmountPerPiece * PiecesThisWeek, 0) +
COALESCE(WeeklySalary + CommissionThisWeek, 0);
PERSISTED 可將結果實體化,查詢時避免重複運算。COALESCE 內部轉換為 CASE 運算式,執行計畫與手寫 CASE 相同。COALESCE 是處理 NULL 值、簡化條件邏輯的利器。善用於動態字串組合、多來源數值合併與計算欄位定義,能讓 T-SQL 程式碼更簡潔、可維護性更高。