CASE WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END
如果val1为true,返回res1,... 否则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END
如果expr的值等于val1,返回res1,... 否则返回default默认值
select if(false, 'ok', 'Error');
select if(true, 'ok', 'Error');
select ifnull('ok','Default');
select ifnull('','Default');
select ifnull(null,'Default');
# 查询emp表的员工姓名和工作地址 (将北京/上海改成一线城市 , 其他改成二线城市)
select
name,
(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp;
# 将score表中的成绩转化为优秀、及格和不及格(85和60为分界线)
select
id,
name,
(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end)
as '数学',
(case when english >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end)
as '英语',
(case when score.chinese >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end)
as '语文'
from score;