共計(jì) 1876 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
這篇文章主要介紹了 sql 中如何使用 case when,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
sql 中 case when 的用法
case 具有兩種格式。簡(jiǎn)單 case 函數(shù)和 case 搜索函數(shù)。
1、簡(jiǎn)單 case 函數(shù)
case sex
when 1 then 男
when 2 then 女’ else 其他 end
2、case 搜索函數(shù)
case when sex = 1 then 男
when sex = 2 then 女
else 其他 end /span
這兩種方式,可以實(shí)現(xiàn)相同的功能。簡(jiǎn)單 case 函數(shù)的寫法相對(duì)比較簡(jiǎn)潔,但是和 case 搜索函數(shù)相比,功能方面會(huì)有些限制,比如寫判定式。(免費(fèi)學(xué)習(xí)視頻教程推薦:mysql 視頻教程)
還有一個(gè)需要注重的問(wèn)題,case 函數(shù)只返回第一個(gè)符合條件的值,剩下的 case 部分將會(huì)被自動(dòng)忽略。
比如說(shuō),下面這段 sql,你永遠(yuǎn)無(wú)法得到“第二類”這個(gè)結(jié)果
case when col_1 in (a , b) then 第一類
when col_1 in (a) then 第二類
else 其他 end
實(shí)例演示:
首先創(chuàng)建一張 users 表,其中包含 id,name,sex 三個(gè)字段,表內(nèi)容如下:
select * from users
ID NAME SEX
---------- -------------------- ----------
1 張一
2 張二 1
3 張三
4 張四
5 張五 2
6 張六 1
7 張七 2
8 張八 1
1、上表結(jié)果中的 sex 是用代碼表示的,希望將代碼用中文表示。可在語(yǔ)句中使用 case 語(yǔ)句:
select u.id,u.name,u.sex,
(case u.sex
when 1 then 男
when 2 then 女
else 空的
end
) 性別
from users u;
ID NAME SEX 性別
--------------------------------------- -------------------- ---------- ------
1 張一 空的
2 張二 1 男
3 張三 空的
4 張四 空的
5 張五 2 女
6 張六 1 男
7 張七 2 女
8 張八 1 男
2、如果不希望列表中出現(xiàn) sex 列,語(yǔ)句如下:
select u.id,u.name,
(case u.sex
when 1 then 男
when 2 then 女
else 空的
end
) 性別
from users u;
ID NAME 性別
--------------------------------------- -------------------- ------
1 張一 空的
2 張二 男
3 張三 空的
4 張四 空的
5 張五 女
6 張六 男
7 張七 女
8 張八 男
3、將 sum 與 case 結(jié)合使用,可以實(shí)現(xiàn)分段統(tǒng)計(jì)。
如果現(xiàn)在希望將上表中各種性別的人數(shù)進(jìn)行統(tǒng)計(jì),sql 語(yǔ)句如下:
select
sum(case u.sex when 1 then 1 else 0 end) 男性,
sum(case u.sex when 2 then 1 else 0 end) 女性,
sum(case when u.sex 1 and u.sex 2 then 1 else 0 end) 性別為空
from users u;
男性 女性 性別為空
---------- ---------- ----------
3 2 0
--------------------------------------------------------------------------------
SQL select
count(case when u.sex=1 then 1 end) 男性,
count(case when u.sex=2 then 1 end) 女,
count(case when u.sex 1 and u.sex 2 then 1 end) 性別為空
from users u;
男性 女 性別為空
---------- ---------- ----------
3 2 0
感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“sql 中如何使用 case when”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
向 AI 問(wèn)一下細(xì)節(jié)