SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法詳解
SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法
CASE WHEN 是 SQL 中非常實(shí)用的條件表達(dá)式,它允許你在查詢中實(shí)現(xiàn)條件邏輯。以下是詳細(xì)的用法說明:
1. 基本語法結(jié)構(gòu)
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END或者簡(jiǎn)單形式:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END2. 在 SELECT 語句中的用法
示例1:簡(jiǎn)單條件判斷
SELECT
employee_name,
salary,
CASE
WHEN salary > 10000 THEN '高薪'
WHEN salary > 5000 THEN '中等'
ELSE '一般'
END AS salary_level
FROM employees;示例2:等值比較(簡(jiǎn)單形式)
SELECT
product_name,
CASE category_id
WHEN 1 THEN '電子產(chǎn)品'
WHEN 2 THEN '服裝'
WHEN 3 THEN '食品'
ELSE '其他'
END AS category_name
FROM products;3. 在 UPDATE 語句中的用法
UPDATE orders
SET discount =
CASE
WHEN order_amount > 1000 THEN 0.1
WHEN order_amount > 500 THEN 0.05
ELSE 0
END;
4. 在 ORDER BY 中的用法
SELECT * FROM customers
ORDER BY
CASE
WHEN country = 'China' THEN 1
WHEN country = 'USA' THEN 2
ELSE 3
END;
5. 在 GROUP BY 中的用法
SELECT
CASE
WHEN age < 20 THEN '青少年'
WHEN age BETWEEN 20 AND 30 THEN '青年'
ELSE '成年'
END AS age_group,
COUNT(*) AS count
FROM users
GROUP BY age_group;
6. 嵌套 CASE WHEN 用法
SELECT
student_name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN
CASE
WHEN attendance_rate > 0.9 THEN 'B+'
ELSE 'B'
END
WHEN score >= 70 THEN 'C'
ELSE 'D'
END AS grade
FROM students;
7. 在聚合函數(shù)中使用
SELECT
department_id,
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count
FROM employees
GROUP BY department_id;
注意事項(xiàng)
- CASE WHEN 會(huì)按順序判斷條件,第一個(gè)滿足的條件會(huì)被執(zhí)行,后面的條件將被忽略
- 如果沒有條件滿足且沒有 ELSE 子句,結(jié)果將為 NULL
- 所有 THEN 子句返回的數(shù)據(jù)類型應(yīng)該兼容
- 在復(fù)雜的 CASE 表達(dá)式中,適當(dāng)使用括號(hào)可以提高可讀性
CASE WHEN 是 SQL 中非常強(qiáng)大的條件表達(dá)式,掌握它可以讓你寫出更加靈活和強(qiáng)大的查詢語句。
到此這篇關(guān)于SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法的文章就介紹到這了,更多相關(guān)sql case when和select case when用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL Server 2005數(shù)據(jù)庫還原錯(cuò)誤的經(jīng)典解決方案
本文主要介紹了一個(gè)SQL Server 2005數(shù)據(jù)庫還原過程中的錯(cuò)誤的解決方案,需要的朋友可以參考下2015-08-08
sqlserver 復(fù)制表 復(fù)制數(shù)據(jù)庫存儲(chǔ)過程的方法
復(fù)制整個(gè)SqlServer數(shù)據(jù)庫的問題的比較好的方法2008-02-02
深入學(xué)習(xí)SQL Server聚合函數(shù)算法優(yōu)化技巧
這篇文章主要深入學(xué)習(xí)SQL Server聚合函數(shù)算法優(yōu)化技巧,感興趣的小伙伴們可以參考一下2015-12-12
升級(jí)SQL Server 2014的四個(gè)要點(diǎn)要注意
升級(jí)一個(gè)關(guān)鍵業(yè)務(wù)SQL Server實(shí)例并不容易,它要求有周全的計(jì)劃。計(jì)劃不全會(huì)增加遇到升級(jí)問題的可能性,從而影響或延遲SQL Server 2014的升級(jí)。在規(guī)劃SQLServer 2014升級(jí)時(shí),有一些注意事項(xiàng)有助于避免遇到升級(jí)問題,需要的朋友可以參考下2015-08-08
將mater庫中的系統(tǒng)存儲(chǔ)過程批量生成*.sql文件 通用且非常實(shí)用
最近因?yàn)橄到y(tǒng)需要,需要將master庫的所有和業(yè)務(wù)相關(guān)的存儲(chǔ)過程批量生成 存儲(chǔ)過程名.sql 文件,默認(rèn)是不可以導(dǎo)出的2012-05-05
Windows 11安裝SQL Server 2019出現(xiàn)"等待數(shù)據(jù)庫引擎恢復(fù)句
這篇文章主要介紹了Windows 11安裝SQL Server 2019出現(xiàn)"等待數(shù)據(jù)庫引擎恢復(fù)句柄失敗"問題完美解決方案,解決方案很簡(jiǎn)單,格式化您的硬盤,刪除分區(qū)并重新指定扇區(qū)大小,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-07-07
SQL中使用CONVERT函數(shù)轉(zhuǎn)換數(shù)據(jù)類型的簡(jiǎn)單實(shí)現(xiàn)方法
CONVERT函數(shù)是SQL中用于數(shù)據(jù)類型轉(zhuǎn)換的工具,允許將一個(gè)數(shù)據(jù)類型轉(zhuǎn)換為另一個(gè),如字符串轉(zhuǎn)數(shù)字或日期轉(zhuǎn)字符串,該函數(shù)的基本語法包括目標(biāo)數(shù)據(jù)類型、要轉(zhuǎn)換的表達(dá)式和可選的格式參數(shù),需要的朋友可以參考下2024-09-09

