使用SQL中SELECT语句的使用条件逻辑


  本文标签:SQL SELECT语句

  如果使用CASE表达式直接在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

  

  解决方案

      使用CASE表达式直接在SELECT语句中执行条件逻辑  。

select ename,sal,
    case when sal <= 2000 then UNDERPAID
         when sal >= 4000 then OVERPAID
         else OK
    end as status
from emp

  讨论

      CASE表达式可以针对返回值执行条件逻辑  。可以给CASE表达式取别名,以返回更易读的结果集  。在本解决方案中,给CASE表达式取的别名是STATUS  。ELSE子句是可选的,如果没有使用ELSE,对于不满足判断条件的行,CASE表达式会返回NULL  。