问题
在 SELECT 语句中,你想执行基于值的 IF-ELSE 操作。例如,在生成结果集时,你想在员工的薪水不超过 2000 时返回消息 UNDERPAID,在员工的薪水不低于 4000 时返回消息 OVERPAID,在员工的薪水为 2000~4000 时返回消息 OK。这个结果集如下所示。
解决方案
在 SELECT 语句中直接使用 CASE 表达式来执行条件逻辑。
select name,
salary,
case
when salary <= 2000 then 'UNDERPAID'
when salary >= 4000 then 'OVERPAID'
else 'OK'
end as status
from emp;
扩展
CASE 表达式能够根据查询返回的值来执行条件逻辑。为了提高结果集的可读性,可以给CASE 表达式指定别名。上述解决方案给 CASE 表达式的结果指定了别名 STATUS。ELSE 子句是可选的。如果省略了 ELSE 子句,那么对于不满足测试条件的行,CASE 表达式将返回 NULL。
select name,
salary,
case
when salary <= 2000 then 'UNDERPAID'
when salary >= 4000 then 'OVERPAID'
end as status
from emp;
点个赞吧,这对我非常重要!