SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法詳解
SQL 中 CASE WHEN 及 SELECT CASE WHEN 的用法
CASE WHEN 是 SQL 中非常實(shí)用的條件表達(dá)式,它允許你在查詢中實(shí)現(xiàn)條件邏輯。以下是詳細(xì)的用法說(shuō)明:
1. 基本語(yǔ)法結(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 語(yǔ)句中的用法
示例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 語(yǔ)句中的用法
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í)行,后面的條件將被忽略
- 如果沒(méi)有條件滿足且沒(méi)有 ELSE 子句,結(jié)果將為 NULL
- 所有 THEN 子句返回的數(shù)據(jù)類(lèi)型應(yīng)該兼容
- 在復(fù)雜的 CASE 表達(dá)式中,適當(dāng)使用括號(hào)可以提高可讀性
CASE WHEN 是 SQL 中非常強(qiáng)大的條件表達(dá)式,掌握它可以讓你寫(xiě)出更加靈活和強(qiáng)大的查詢語(yǔ)句。
到此這篇關(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中的單條件判斷函數(shù)IF和多條件判斷CASE WHEN的用法
MySQL提供了IF、IFNULL、CASE等條件判斷函數(shù),本文就來(lái)介紹一下SQL中的單條件判斷函數(shù)IF和多條件判斷CASE WHEN的用法,感興趣的可以了解一下2023-10-10
SQL Server 排序函數(shù) ROW_NUMBER和RANK 用法總結(jié)
下面的例子和SQL語(yǔ)句均在SQL Server 2008環(huán)境下運(yùn)行通過(guò),使用SQL Server自帶的AdventureWorks數(shù)據(jù)庫(kù)。2009-07-07
利用SQL SERVER建立登錄WINDOWS帳號(hào)
SQL SERVER建立WINDOWS登錄帳號(hào)2009-02-02
監(jiān)控 log文件大小的存儲(chǔ)過(guò)程
用來(lái)監(jiān)控 log文件大小的存儲(chǔ)過(guò)程,需要的朋友可以參考下。2010-07-07
SQLSERVER Pager store procedure分頁(yè)存儲(chǔ)過(guò)程
SQL SERVER(2005)以上版本可用,相對(duì)應(yīng)的頁(yè)面邏輯中寫(xiě)的對(duì)應(yīng)調(diào)用該存儲(chǔ)過(guò)程的方法2010-06-06
MsSQL數(shù)據(jù)庫(kù)基礎(chǔ)與庫(kù)的基本操作方法
文章主要介紹了數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),包括數(shù)據(jù)庫(kù)的定義、主流數(shù)據(jù)庫(kù)系統(tǒng)(如MySQL、PostgreSQL等)、數(shù)據(jù)庫(kù)操作(如創(chuàng)建、修改、刪除數(shù)據(jù)庫(kù),備份和恢復(fù)等)以及查看連接情況,感興趣的朋友一起看看吧2025-02-02
詳解SqlServer數(shù)據(jù)庫(kù)中Substring函數(shù)的用法
substring操作的字符串,開(kāi)始截取的位置,返回的字符個(gè)數(shù),本文通過(guò)簡(jiǎn)單實(shí)例給大家介紹了SqlServer數(shù)據(jù)庫(kù)中Substring函數(shù)的用法,感興趣的朋友一起看看吧2018-04-04
SQLServer中Partition By及row_number 函數(shù)使用詳解
partition by關(guān)鍵字是分析性函數(shù)的一部分,partition by用于給結(jié)果集分組,如果沒(méi)有指定那么它把整個(gè)結(jié)果集作為一個(gè)分組,本文給大家介紹SQLServer中Partition By及row_number 函數(shù)使用詳解,需要的朋友參考下2015-11-11
在 SQLSERVER 中快速有條件刪除海量數(shù)據(jù)
最近有個(gè)朋友問(wèn)我,他說(shuō)他在SQLSERVER刪除幾百萬(wàn)到幾千萬(wàn)數(shù)據(jù)是顯的很慢,幫他分析了一下,提了一些以下意見(jiàn),或許對(duì)很多人有用。2008-10-10

