MYSQL之CASE WHEN的簡單理解和使用

2021-10-06 18:10:15 字數 1665 閱讀 5359

mysql中的case when有兩種寫法:

簡單函式

case [col_name] when [value1] then [result1]…else [default] end搜尋函式 

case when [expr] then [result1]…else [default] end針對乙個欄位來進行列舉,把可能的值的定義結果來重新放到一列,下面user_group表

idname1張三

2李四3王五

4朱六

select `name`, case name

when '張三' then

'第一組'

when '李四' then

'第二組'

else

'第三組'

end 'group' from user_group;

得到的結果如下表

name

group

張三第一組

李四第二組

王五第三組

朱六第三組

case語句允許在when下根據判斷語句,在結果內對值進行替換,下面user_age表

idname

age1

名字13

2名字2163

名字321

4名字4295

名字531

6名字6567

名字763

select `name`,age,case 

when age<18 then

'少年'

when age>=18 and age<30 then

'青年'

when age>=30 and age<50 then

'中年'

else

'老年'

end stage from user_age;

結果:

name

agestage

名字13

少年名字2

16少年

名字321

青年名字4

29青年

名字531

中年名字6

56老年

名字763

老年除了進行基礎的判斷用法外,他還可以用作行轉列操作。按照上面得到的結果來插入到乙個user_stage表中,現在有個需求,把stage中的每個階段當做乙個單獨的字段來進行統計每個階段的人數。

select 

sum(case stage

when '少年' then

1 else

0end) '少年',

sum(case stage

when '青年' then

1 else

0end) '青年',

sum(case stage

when '中年' then

1 else

0end) '中年',

sum(case stage

when '老年' then

1 else

0end) '老年'

from user_stage

其實這個方法並不好,有更簡單的方法實現,但是在這裡只做演示,結果:

少年青年

中年老年22

12

MySQL 之 CASE WHEN 的使用方法

case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...

mysql中case when的用法

設計資料庫的時候總會把使用者的性別用int儲存 0 為女,1 為男 但是怎麼把它抓換成漢子顯示呢?姓名 case when 0then 女 else 男 end as 性別 from test.student 最後的end要記得寫,查詢結果 按照使用者成績顯示優 90分以上 良 80分 90分 及格...

oracle之 case when 的用法

oracle case when的用法 select col1,col2,case when col3 1 and col3 2 then 1 when col3 2 and col3 3 then 2 when col3 3 and col3 4 then 3 else 4 end mylevel...