case函數的使用一:switch case 的效果 /* Java中 switch(變數或表達式){ case 常量1:語句1:break; ... default:語句n;break; } MySQL中 case 要判斷的欄位或表達式 #將switch替換成case when 常量1 then ...
case函數的使用一:switch case 的效果
/*
Java中
switch(變數或表達式){
case 常量1:語句1:break;
...
default:語句n;break;
}
MySQL中
case 要判斷的欄位或表達式 #將switch替換成case
when 常量1 then 要顯示的值1或語句1; #將case替換成when,將:替換成then
when 常量2 then 要顯示的值2或語句2;
...
else 要顯示的值n或語句n; #else替換為default,表示預設情況
end #判斷的是值
*/
/*案列:查詢員工的工資,要求:
部門號=30,顯示的工資為1.1倍
部門號=40,顯示的工資為1.2倍
部門號=50,顯示的工資為1.3倍
其他部門,顯示的工資為原工資
*/
select salary 原始工資,department_id,
case department_id
when 30 then salary*1.1
when 40 then salary*1.2
when 50 then salary*1.3
else salary
end as 新工資
from employees;
case函數的使用二:類似於 多重if
/*
Java中:
if(條件1){
語句 1;
}else if(條件二){
語句2:
}
...
else{
語句n;
}
MySQL中:
case
when 條件1 then 要顯示的值1或語句1
when 條件2 then 要顯示的值2或語句2
...
else 要顯示的值n或語句n
end #判斷的是區間
*/
#案列:查詢員工的工資情況
如果工資>20000,顯示‘A’級別
如果工資>15000,顯示‘B'級別
如果工資>10000,顯示’C'級別
否則,顯示‘D’級別
select salary,
case
when salary>20000 then 'A'
when salary>15000 then 'B'
when salary>10000 then 'C'
else 'D'
end as Grade
from employees;