萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> sql case 函數與詳細說明

sql case 函數與詳細說明

下面是一個是用case函數來完成這個功能的例子

case具有兩種格式。簡單case函數和case搜索函數。
--簡單case函數

case sex
         when '1' then '男'
         when '2' then '女'
else '其他' end
--case搜索函數
case when sex = '1' then '男'
         when sex = '2' then '女'
else '其他' end

這兩種方式,可以實現相同的功能。簡單case函數的寫法相對比較簡潔,但是和case搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,case函數只返回第一個符合條件的值,剩下的case部分將會被自動忽略。
--比如說,下面這段sql,你永遠無法得到“第二類”這個結果

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


下面看一些實例

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;


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;

關於case 二

 

select
case when salary <= 500 then '1'
when salary > 500 and salary <= 600 then '2'
when salary > 600 and salary <= 800 then '3'
when salary > 800 and salary <= 1000 then '4'
else null end salary_class,
count(*)
from table_a
group by
case when salary <= 500 then '1'
when salary > 500 and salary <= 600 then '2'
when salary > 600 and salary <= 800 then '3'
when salary > 800 and salary <= 1000 then '4'
else null end;
copyright © 萬盛學電腦網 all rights reserved