DECODE 與CASE WHEN 的比較以及用法


1.DECODE 只有Oracle 才有,其它數據庫不支持;
2.CASE WHEN的用法, Oracle、SQL Server、 MySQL 都支持;
3.DECODE 只能用做相等判斷,但是可以配合sign函數進行大於,小於,等於的判斷,CASE when可用於=,>=,<,<=,<>,is null,is not null 等的判斷;
4.DECODE 使用其來比較簡潔,CASE 雖然復雜但更為靈活;
5.另外,在decode中,null和null是相等的,但在case when中,只能用is null來判斷,示例如下:
emp表中有一列comm,如果這列為null,則顯示為0,否則,顯示為原值:

用法

CASE WHEN:

單條件

CASE 
WHEN  MAIL_FLAG = '1'  THEN  '已發放'
WHEN  MAIL_FLAG = '0'  THEN  '未發放'

ELSE   ''
END AS MAIL_FLAG

多條件

CASE 
WHEN  MAIL_FLAG = '1'  AND  STATUS = '1'  THEN  '已發放' 
WHEN  MAIL_FLAG = '0'  AND  STATUS = '0'  THEN  '未發放'

ELSE   ''
END AS MAIL_FLAG

 

DECODE:

DECODE(MAIL_FLAG,'1','已導出','0','未導出 ' ) AS  MAIL_FLAG

DECODE(條件,值1,返回值1,值2,返回值2.....)

條件=值1 返回值1

條件=值2 返回值2

...........................


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM