DECODE 与CASE WHEN 的区别:
1、decode只适用于Oracle和informix,不适用于其他数据库;
2、case when的用法, Oracle、SQL Server、 MySQL、 informix都支持;
3、decode只能用做相等判断,但是可以配合sign函数进行大于,小于,等于的判断,case when可用于=,>=,<,<=,<>,is null,is not null 等的判断;
4、decode使用其来比较简洁,case虽然复杂但更为灵活;
5、另外,在decode中,null和null是相等的,但在case when中,只能用is null来判断。
decode函数有两种写法方式:
第一种:
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
意思是当条件等于值1时返回值1,等于值2时返回值2,......等于值3时返回值3,等于其他情况时都返回最后的缺省值。
第二种:
decode(字段或字段的运算,值1,值2,值3)
意思是字段或字段的运算等于值1时,返回值2,否则,都返回值3。