SQL Cookbook:一、检索记录(8)在SELECT语句中使用条件逻辑
問題
??? 在SELECT語句中對數(shù)值進行IF-ELSE操作。例如,要產(chǎn)生一個結(jié)果集,如果一個員工的工資小于等于$2000,就返回消息UNDERPAID,如果大于等于$4000,就返回消息OVERPAID,如果在兩者之間,就返回OK。結(jié)果集應如下所示:
| 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語句中執(zhí)行條件邏輯。
select ename,sal,case when sal <= 2000 then 'UNDERPAID'when sal >= 4000 then 'OVERPAID'else 'OK'end as status from emp討論
??? CASE表達式可以針對返回值執(zhí)行條件邏輯。可以給CASE表達式取別名,以返回更易讀的結(jié)果集。在本解決方案中,給CASE表達式取的別名是STATUS。ELSE子句是可選的,如果沒有使用ELSE,對于不滿足判斷條件的行,CASE表達式會返回NULL。
版權(quán)說明:作者:張穎希(PocketZ's Blog)
出處:http://www.cnblogs.com/PocketZ
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權(quán)利。
本文翻譯內(nèi)容取自網(wǎng)絡,純粹是練習英文水平,如有雷同,純屬意外!有不妥之處,歡迎拍磚!
轉(zhuǎn)載于:https://www.cnblogs.com/PocketZ/archive/2010/04/19/Using_Conditional_Logic_in_a_SELECT_Statement.html
總結(jié)
以上是生活随笔為你收集整理的SQL Cookbook:一、检索记录(8)在SELECT语句中使用条件逻辑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据访问层,完整的增,删,改,查
- 下一篇: linux cmake编译源码,linu