程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> sql case 函數與詳細說明

sql case 函數與詳細說明

編輯:MySQL綜合教程

下面是一個是用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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved