使用SQL中SELECT語句的使用條件邏輯
如果使用CASE表達式直接在SELECT語句中執(zhí)行條件邏輯,可以解決使用數(shù)據(jù)庫中的一些問題,下面將為您示例分析,供您參考:
問題
在SELECT語句中對數(shù)值進行IF-ELSE操作。例如,要產(chǎn)生一個結(jié)果集,如果一個員工的工資小于等于$2000,就返回消息UNDERPAID,如果大于等于$4000,就返回消息OVERPAID,如果在兩者之間,就返回OK。結(jié)果集應(yīng)如下所示:
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í)行條件邏輯??梢越oCASE表達式取別名,以返回更易讀的結(jié)果集。在本解決方案中,給CASE表達式取的別名是STATUS。ELSE子句是可選的,如果沒有使用ELSE,對于不滿足判斷條件的行,CASE表達式會返回NULL。
【編輯推薦】