首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server COALESCE 函數進階應用與技巧

     編輯:關於SqlServer

基本語法與特性

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 程式碼更簡潔、可維護性更高。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved