SQL Server ISNULL
ISNULL(check_expression, replacement_value)
- 兩參數資料型別必須相同 (隱含轉換)。
check_expression 為 NULL → 回傳 replacement_value。
check_expression 不為 NULL → 回傳 check_expression。
MySQL IFNULL
IFNULL(expr1, expr2)
- 型別可不同,回傳型別依較高優先級決定。
expr1 不為 NULL → 回傳 expr1,否則回傳 expr2。
快速對照
| 特性 | SQL Server ISNULL | MySQL IFNULL |
| 參數數 | 2 | 2 |
| 型別要求 | 必須相容/相同 | 可不同 |
| 回傳 NULL 可能 | 否 (第二參數非 NULL 時) | 是 (expr2 為 NULL) |
| 標準 SQL 對應 | COALESCE (多參數) | COALESCE (多參數) |
跨平台建議
- 可移植性優先:使用
COALESCE(expr1, expr2, ...),ANSI SQL 標準,支援多參數,所有主流資料庫皆支援。
- SQL Server 專案:
ISNULL 效能略優於 COALESCE (後者轉為 CASE 運算式)。
- MySQL 專案:
IFNULL 或 COALESCE 均可。
範例
-- SQL Server
SELECT ISNULL(Price, 0) FROM Products;
-- MySQL
SELECT IFNULL(Price, 0) FROM Products;
-- 通用
SELECT COALESCE(Price, 0) FROM Products;