SQL CASE表達式的用法
- 一、CASE表達式的基礎語法
- 簡單CASE表達式
- 搜索CASE表達式
- 二、簡單CASE表達式的應用示例
- 三、搜索CASE表達式的應用示例
- 四、CASE表達式在聚合函數中的應用
- 五、嵌套CASE表達式的應用
今天在也無力用到了CASE表達式,于是有了這篇博客,CASE表達式是一個極為實用的工具,能幫助開發者實現復雜的條件邏輯判
一、CASE表達式的基礎語法
CASE表達式主要有兩種語法形式:簡單CASE表達式和搜索CASE表達式。
簡單CASE表達式
CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE result
END
其中,expression
是需要計算的表達式,value1
、value2
等是與expression
進行比較的值,result1
、result2
等是當expression
等于對應值時返回的結果。ELSE result
是可選部分,當expression
不等于任何指定值時返回此結果,若省略則默認返回NULL
。
搜索CASE表達式
CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE result
END
這里的condition1
、condition2
等是要計算的條件,result1
、result2
等是當對應條件為真時返回的結果。ELSE result
同樣可選,當所有條件都為假時返回,省略時默認返回NULL
。
二、簡單CASE表達式的應用示例
假設有一張員工表employees
,包含employee_id
、name
和department_id
字段。我們想根據department_id
顯示部門名稱。
SELECT employee_id,name,department_id,CASE department_idWHEN 1 THEN '銷售部'WHEN 2 THEN '研發部'WHEN 3 THEN '財務部'ELSE '其他部門'END AS department_name
FROM employees;
通過這個查詢,就能將數字形式的department_id
轉換為具體的部門名稱。
三、搜索CASE表達式的應用示例
繼續以employees
表為例,這次我們想根據員工的薪資范圍來劃分薪資等級。
SELECT employee_id,name,salary,CASEWHEN salary >= 10000 THEN '高薪資'WHEN salary >= 5000 THEN '中等薪資'ELSE '低薪資'END AS salary_level
FROM employees;
利用搜索CASE表達式,依據不同的薪資條件判斷出薪資等級。
四、CASE表達式在聚合函數中的應用
假設我們要統計不同薪資等級的員工人數。
SELECT SUM(CASE WHEN salary >= 10000 THEN 1ELSE 0END) AS high_salary_count,SUM(CASE WHEN salary >= 5000 THEN 1ELSE 0END) AS medium_salary_count,SUM(CASE WHEN salary < 5000 THEN 1ELSE 0END) AS low_salary_count
FROM employees;
在聚合函數SUM
中結合CASE表達式,實現了對不同薪資等級員工人數的統計。
五、嵌套CASE表達式的應用
當遇到更為復雜的條件判斷時,可以使用嵌套CASE表達式。比如,在統計員工績效時,先判斷是否完成基本任務量,再根據完成的超額比例進行細分。
SELECT employee_id,name,task_completion,CASEWHEN task_completion >= 100 THENCASEWHEN task_completion >= 150 THEN '卓越'WHEN task_completion >= 120 THEN '優秀'ELSE '良好'ENDELSE '待提高'END AS performance_level
FROM employees;
通過這種嵌套方式,能處理多維度的條件判斷。