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;