欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

case?when?then?else?end語(yǔ)句的用法(附demo)

 更新時(shí)間:2023年10月10日 09:29:46   作者:奮豆來(lái)襲  
本文主要介紹了case?when?then?else?end語(yǔ)句的用法,主要介紹了兩種格式,簡(jiǎn)單case函數(shù)和case搜索函數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下

case具有兩種格式。簡(jiǎn)單case函數(shù)和case搜索函數(shù)。

  • case :表示需要處理的字段
  • when :表示條件
  • then :表示當(dāng)when執(zhí)行為true時(shí),再執(zhí)行的語(yǔ)句
  • else :表示當(dāng)所有的when執(zhí)行為false時(shí),再執(zhí)行的語(yǔ)句
  • end:表示 case 語(yǔ)句結(jié)束的結(jié)尾

--簡(jiǎn)單case函數(shù)

case sex
when '1' then '男'
when '2' then '女'
else '其他' end

 --case搜索函數(shù)--經(jīng)常用的是這個(gè)

 case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end

這兩種方式,可以實(shí)現(xiàn)相同的功能。簡(jiǎn)單case函數(shù)的寫法相對(duì)比較簡(jiǎn)潔,但是和case搜索函數(shù)相比,功能方面會(huì)有些限制,比如寫判定式。 
還有一個(gè)需要注重的問題,case函數(shù)只返回第一個(gè)符合條件的值,剩下的case部分將會(huì)被自動(dòng)忽略。

--比如說,下面這段sql,你永遠(yuǎn)無(wú)法得到“第二類”這個(gè)結(jié)果

case when col_1 in ( 'a', 'b') then'第一類'
when col_1 in ('a')       then '第二類'
else '其他' end

這是原始表:

 例子一:看下select函數(shù)加case函數(shù)和不加case函數(shù)的區(qū)別

不加case函數(shù)的,SELECT  id,name,core,sex FROM student a ;

 加case函數(shù)的,SELECT (CASE WHEN a.`name`='張三' THEN a.core ELSE 0 END) AS '張三' , id,name,core,sex FROM student a ;

 可以看到,加了case函數(shù)的就是自己?jiǎn)为?dú)成一列,就是比不加多了一列數(shù)據(jù),它并不會(huì)改變行的數(shù)量.

例子二:   介紹下case函數(shù)的執(zhí)行過程.

SELECT (CASE WHEN a.`name`='張三' THEN a.core ELSE 0 END) AS '張三' FROM student a ;

 上面的執(zhí)行過程:

進(jìn)行匹配的是名字name,首先匹配第一行,name是等于張三,所以返回core也就是50
匹配第二行,name等于李四,不匹配,返回else的值也就是0
匹配第三行,name等于王五,不匹配,返回else的值也就是0
匹配第四行,name等于趙六,不匹配,返回else的值也就是0
所以得到結(jié)果:

例子三:   看下case函數(shù)后面加不加as的區(qū)別

先看下加as, SELECT (CASE WHEN a.`name`='張三' THEN a.core ELSE 0 END) AS '張三' FROM student a ; 

 然后是不加as,   SELECT (CASE WHEN a.`name`='張三' THEN a.core ELSE 0 END) FROM student a ; 

 可以看到, 加as就是對(duì)生成的列取個(gè)別名,  不加as的話默認(rèn)的列名就是 case這整個(gè)標(biāo)簽.

例子四:一列里面多次條件匹配

SELECT (CASE WHEN a.`name`='張三' THEN a.core WHEN a.`name`='李四' THEN a.core END) AS '張三' FROM student a ;

執(zhí)行過程:第一行匹配張三成功,返回50,第二行匹配李四成功返回60,三四兩行不匹配返回null

例子五:多列的單條件匹配

SELECT (CASE WHEN a.`name`='張三' THEN a.core END) AS '張三',(CASE WHEN a.`name`='李四' THEN a.core END) AS '李四' FROM student a;

總結(jié)case語(yǔ)句能將行轉(zhuǎn)換成列

例子六:實(shí)戰(zhàn)一

有如下數(shù)據(jù):

根據(jù)這個(gè)國(guó)家人口數(shù)據(jù),統(tǒng)計(jì)亞洲和北美洲的人口數(shù)量。得到下面這個(gè)結(jié)果:

 查詢sql:

select sum(population),
            case country
            when '中國(guó)'     then'亞洲'
            when '印度'     then'亞洲'
            when '日本'     then'亞洲'
            when '美國(guó)'     then'北美洲'
            when '加拿大'  then'北美洲'
            when '墨西哥'  then'北美洲'
            else '其他' end
            from   table_a
            group by case country
            when '中國(guó)'     then'亞洲'
            when '印度'     then'亞洲'
            when '日本'     then'亞洲'
            when '美國(guó)'     then'北美洲'
            when '加拿大'  then'北美洲'
            when '墨西哥'  then'北美洲'
            else '其他' end;

例子七:實(shí)戰(zhàn)二

有如下數(shù)據(jù):

按照國(guó)家和性別進(jìn)行分組,得出結(jié)果如下:

查詢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;

到此這篇關(guān)于case when then else end語(yǔ)句的用法(附demo)的文章就介紹到這了,更多相關(guān)case when then else end內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論