這篇文章將為大家詳細(xì)講解有關(guān)SQL中case when怎么用,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、黔西南州網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
SQL中case when的用法
Case具有兩種格式:簡(jiǎn)單Case函數(shù)和Case搜索函數(shù)。
簡(jiǎn)單Case函數(shù):
CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END
Case搜索函數(shù):
CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘0’ THEN ‘女’ ELSE ‘其他’ END
顯然,簡(jiǎn)單Case函數(shù)勝在簡(jiǎn)潔,但是它只適用于這種單字段的單值比較,而Case搜索函數(shù)的優(yōu)點(diǎn)在于適用于所有比較的情況。
還有一個(gè)需要注意的問(wèn)題,Case函數(shù)在滿(mǎn)足了某個(gè)符合條件后,剩下的條件將會(huì)被自動(dòng)忽略,因此,即使?jié)M足多個(gè)條件,執(zhí)行過(guò)程中也只認(rèn)第一個(gè)條件。
在使用 CASE WHEN時(shí),可以把它當(dāng)作一個(gè)邏輯上的匿名字段,字段值根據(jù)條件確認(rèn),在需要使用字段名時(shí)可以是用 as來(lái)定義別名。這么說(shuō)還很抽象,看看下面 CASE WHEN的使用案例就清楚了。
使用場(chǎng)景
1、可以將已知數(shù)據(jù)按照某種方式進(jìn)行分組,分析。
根據(jù)這個(gè)國(guó)家人口數(shù)據(jù),統(tǒng)計(jì)亞洲和北美洲的人口數(shù)量。使用如下 SQL:
SELECT CASE country WHEN '中國(guó)' THEN '亞洲' WHEN '印度' THEN '亞洲' WHEN '日本' THEN '亞洲' WHEN '美國(guó)' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END as '洲' , SUM(population) as '人口' FROM test GROUP BY CASE country WHEN '中國(guó)' THEN '亞洲' WHEN '印度' THEN '亞洲' WHEN '日本' THEN '亞洲' WHEN '美國(guó)' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END;
這里的兩個(gè)CASE WHEN都相當(dāng)于一個(gè)字段,不過(guò)值得一提的是,第二個(gè)CASE WHEN 的THEN值并不用寫(xiě)明是什么洲,它只是用于將記錄進(jìn)行分組,所以THEN后面的值只有能區(qū)分這三種記錄就行,GROUP BY也可以寫(xiě)成:
GROUP BY CASE country WHEN '中國(guó)' THEN 0 WHEN '印度' THEN 0 WHEN '日本' THEN 0 WHEN '美國(guó)' THEN 1 WHEN '加拿大' THEN 1 WHEN '墨西哥' THEN 1 ELSE 2 END;
2、用一個(gè)SQL語(yǔ)句完成不同條件的分組。
有如下數(shù)據(jù):
用Case函數(shù)來(lái)完成按照國(guó)家和性別進(jìn)行分組。使用如下SQL:
SELECT country, SUM( CASE WHEN sex = '1' THEN population ELSE 0 END ), --男性人口 SUM( CASE WHEN sex = '2' THEN population ELSE 0 END ) --女性人口 FROM Table_A GROUP BY country;
得到如下結(jié)果:
就第一個(gè)CASE WHEN講解:
CASE WHEN sex = '1' THEN population ELSE 0 END
當(dāng)記錄的sex為1時(shí),這個(gè)字段的值為記錄的population值,否則為0,因此能計(jì)算出一個(gè)國(guó)家的男性人口。
關(guān)于“SQL中case when怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
分享名稱(chēng):SQL中casewhen怎么用
當(dāng)前地址:http://www.rwnh.cn/article40/jdcgeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、Google、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)