SQL 在SELECT语句里使用条件逻辑,你想在 SELECT 语句中针对查询结果值执行 IF-ELSE 操作。例如,你想生成类似这样的结果:如果员工的工资少于 2000 美元,就返回 UNDERPAID;如果超过 4000 美元就返回 OVERPAID;若介于两者之间则返回 OK。查询结果如下所示。
SQL 在SELECT语句里使用条件逻辑 问题
你想在 SELECT
语句中针对查询结果值执行 IF-ELSE
操作。例如,你想生成类似这样的结果:如果员工的工资少于 2000
美元,就返回 UNDERPAID
;如果超过 4000
美元就返回 OVERPAID
;若介于两者之间则返回 OK
。查询结果如下所示。
ENAME SAL STATUS
---------- ---------- ---------
SMITH 800 UNDERPAID
ALLEN 1600 UNDERPAID
WARD 1250 UNDERPAID
JONES 2975 OK
MARTIN 1250 UNDERPAID
BLAKE 2850 OK
CLARK 2450 OK
SCOTT 3000 OK
KING 5000 OVERPAID
TURNER 1500 UNDERPAID
ADAMS 1100 UNDERPAID
JAMES 950 UNDERPAID
FORD 3000 OK
MILLER 1300 UNDERPAID
SQL 在SELECT语句里使用条件逻辑 解决方案
在 SELECT
语句里直接使用 CASE
表达式来执行条件逻辑。
select ename,sal,
case when sal <= 2000 then 'UNDERPAID'
when sal >= 4000 then 'OVERPAID'
else 'OK'
end as status
from emp
SQL 在SELECT语句里使用条件逻辑 扩展知识
CASE
表达式能对查询结果执行条件逻辑判断。你可以为 CASE
表达式的执行结果取一个别名,使结果集更有可读性。就本例而言,STATUS
就是 CASE
表达式执行结果的别名。ELSE
子句是可选的,若没有它,对于不满足测试条件的行,CASE
表达式会返回 Null
。