假設 Products 表中 UnitsOnOrder 欄位允許 NULL 值:
| P_Id | ProductName | UnitPrice | UnitsInStock | UnitsOnOrder |
|---|---|---|---|---|
| 1 | Jarlsberg | 10.45 | 16 | 15 |
| 2 | Mascarpone | 32.56 | 23 | |
| 3 | Gorgonzola | 15.67 | 9 | 20 |
若直接計算 UnitPrice * (UnitsInStock + UnitsOnOrder),當 UnitsOnOrder 為 NULL 時,整個運算結果會變成 NULL。我們需要將 NULL 視為 0 參與運算。
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
-- IFNULL 專用
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
-- COALESCE 標準 SQL,跨平台通用
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
建議: COALESCE() 為 ANSI SQL 標準函數,支援多參數且跨平台相容性最佳,優先推薦使用。