case when [val1] then [res1] ...else [default] end 如果val1为true,返回res1,否则返回default默认值
case [expr] when [val1] then [res1] ... else [default] end 如果expr的值等于vall,返回res1,...否则返回default默认值
示例:
1.-- if(value,t,f)
sql复制代码
select if(false,'ok','error');
2.-- ifnull(value1,value2)
sql复制代码
select ifnull(null,'error');
error
3.case when [val1] then [res1] ...else [default] end
sql复制代码
select name,(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市') as '工作地址' from emp;
案例:
统计班级各个学员的成绩,展示的规则如下:
>=85,展示优秀
>=60,展示及格
否则,展示不及格
sql复制代码
select id,name,(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格') as '数学成绩',(case when chinese >= 85 then '优秀' when chinese >=60 then '及格' else '不及格') as '语文成绩',(case when english>=85 then '优秀' when english >=60 then '及格' else '不及格') as '英语成绩' from score;