expr 是否為 NULL1(是 NULL) / 0(非 NULL)SELECT ISNULL(NULL), ISNULL('abc'); -- 1, 0expr1 非 NULL 返回 expr1,否則返回 expr2CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 ENDSELECT IFNULL(NULL, 'default'), IFNULL('val', 'default'); -- 'default', 'val'expr1 = expr2 返回 NULL,否則返回 expr1CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 ENDSELECT NULLIF(5,5), NULLIF(5,3); -- NULL, 5| 函數 | 參數 | 邏輯 | 典型用途 |
|---|---|---|---|
| ISNULL | 1 | 是否為 NULL | 條件判斷、統計空值行數 |
| IFNULL | 2 | 首個非 NULL | 字段默認值、避免 NULL 參與運算 |
| NULLIF | 2 | 相等則 NULL | 除零保護 NULLIF(divisor,0)、清洗特定值 |
COALESCE(a,b,c...) 為 IFNULL 多參數版,返回首個非 NULLIFNULL(col,0) 可讓數值列參與 SUM/AVG 等聚合不受 NULL 影響NULLIF(str,'') 將空字符串轉 NULL,便於唯一索引區分空值