?CASE WHEN THEN ELSE END??是SQL中實現條件邏輯的核心表達式,支持單字段匹配和多條件判斷,適用于數據處理、分類統計等場景。
?基本語法形式?
SQL中CASE表達式有兩種標準形式:
1???簡單CASE表達式?(字段直接匹配)
CASE 字段
WHEN 值1 THEN 結果1
WHEN 值2 THEN 結果2
ELSE 默認結果
END
示例:CASE gender WHEN 'M' THEN '男' ELSE '未知' END
??1??2
2?、搜索CASE表達式?(支持復雜條件)。
CASE
WHEN 條件1 THEN 結果1
WHEN 條件2 THEN 結果2
ELSE 默認結果
END
示例:CASE WHEN salary>5000 THEN '高收入' WHEN salary>3000 THEN '中等收入' ELSE '低收入' END
??? 3??? ?4?
?核心功能特性?
- ?短路執行機制?:僅返回首個滿足條件的THEN結果,后續條件不再評估。??5??6
- ?ELSE可選性?:省略ELSE子句時默認返回NULL。??7
- ?結果類型一致性?:所有THEN結果和ELSE結果必須保持相同數據類型。??8
?典型應用場景?
1???數據分類標注?。
SELECT product_name,
CASE WHEN price > 100 THEN '高價商品'
WHEN price > 50 THEN '中價商品'
ELSE '平價商品'
END AS price_level
FROM products;
2.動態分組統計?。
SELECT
CASE WHEN age < 18 THEN '未成年'
WHEN age BETWEEN 18 AND 60 THEN '成年人'
ELSE '老年人'
END AS age_group,
COUNT(*) AS user_count
FROM users
GROUP BY age_group;
3???條件聚合計算?。
SELECT department,
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS total_completed,
SUM(CASE WHEN status = 'pending' THEN amount ELSE 0 END) AS total_pending
FROM orders
GROUP BY department;
NULL值處理?:需顯式使用IS NULL
判斷,如WHEN field IS NULL THEN '空值'
??11