case when [val1] then [res1] when [val2] then [res2] ... else [default] end
如果 val1 为 true, 返回 res1,...,否则返回 default 默认值
case [expr] when [val1] then [res1] when [val2] then [res2] ... else [default] end
如果 expr 的值等于 val1,返回 res1,...,否则返回 default 默认值
sql复制代码
-- if(value, t, f)
select if(true, 'True', 'False');
select if(false, 'True', 'False');
-- ifnull(value1, value2)
select ifnull('OK', 'Default');
select ifnull('', 'Default');
select ifnull(null, 'Default');
-- case when [val1] then [res1] when [val2] then [res2] ... else [default] end
select
id,
name,
(case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as math,
(case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) as english,
(case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) as chinese
from
score;
-- case [expr] when [val1] then [res1] when [val2] then [res2] ... else [default] end
select
id,
name,
(case address when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as address
from
tb_emp;