1.DECODE 只有Oracle 才有,其它資料庫不支持; 2.CASE WHEN的用法, Oracle、SQL Server、 MySQL 都支持; 3.DECODE 只能用做相等判斷,但是可以配合sign函數進行大於,小於,等於的判斷,CASE when可用於=,>=,<,<=,<>,is n ...
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
...........................