SQL Cookbook:一、检索记录(8)在SELECT语句中使用条件逻辑

本文介绍如何在SQL查询中使用CASE表达式实现条件逻辑,通过具体示例展示了如何根据员工薪资的不同区间返回不同的状态信息。

问题

    在SELECT语句中对数值进行IF-ELSE操作。例如,要产生一个结果集,如果一个员工的工资小于等于$2000,就返回消息UNDERPAID,如果大于等于$4000,就返回消息OVERPAID,如果在两者之间,就返回OK。结果集应如下所示:

ENAMESAL STATUS
------------------------------
SMITH800UNDERPAID
ALLEN1600UNDERPAID
WARD1250UNDERPAID
JONES2975OK
MARTIN1250UNDERPAID
BLAKE2850OK
CLARK2450OK
SCOTT3000OK
KING5000OVERPAID
TURNER1500UNDERPAID
ADAMS1100UNDERPAID
JAMES950UNDERPAID
FORD3000OK
MILLER1300UNDERPAID

解决方案

    使用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。

版权说明:作者:张颖希PocketZ's Blog
出处:http://www.cnblogs.com/PocketZ
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文翻译内容取自网络,纯粹是练习英文水平,如有雷同,纯属意外!有不妥之处,欢迎拍砖!

转载于:https://www.cnblogs.com/PocketZ/archive/2010/04/19/Using_Conditional_Logic_in_a_SELECT_Statement.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值