亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

--簡單case函數(shù)

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

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

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

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

--比如說,下面這段sql,你永遠(yuǎn)無法得到“第二類”這個結(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ù)的就是自己單獨(dú)成一列,就是比不加多了一列數(shù)據(jù),它并不會改變行的數(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就是對生成的列取個別名,  不加as的話默認(rèn)的列名就是 case這整個標(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語句能將行轉(zhuǎn)換成列

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

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

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

 查詢sql:

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

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

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

按照國家和性別進(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語句的用法(附demo)的文章就介紹到這了,更多相關(guān)case when then else end內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論