Oracle Decode函数是一个功能强大的Oracle特有函数(似乎别的数据库都没有这样的函数)
函数原型
Decode(条件,值1,转换值1,值2,转换值2……,缺省值) 相当于if then 或者替代where条件
用法:
1,替代where 用于一些条件和判断的过滤
网上范例:
SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT,
COUNT(DECODE(DEPT_NO,0030,’X’,NULL)) D0030_COUNT,
SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,
SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL
FROM EMP WHERE ENAME LIKE ‘SMITH%’
sum或count时,根据条件做过滤
2,select sum(a) from A 时,A无记录,sum值为null,想当sum为null时,转换为0.可以:
Decode( (select sum(a) from A ) , null , 0 , (select sum(a) from A ) ) 相当与nvl
3,比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual
============================================================================================================
一、sign函数用于比较大小,语法如下:sign( number )
number 是要测试标志的数字.
If number < 0, then sign returns -1.
If number = 0, then sign returns 0.
If number > 0, then sign returns 1.
二、decode 具有和 IF-THEN-ELSE 一样的功能。decode 函数语法如下:
decode( expression , search , result [, search , result]... [, default] )
如:decode(sign(cj1p-cj2p),1,cj1p,cj2p),若cj1p>cj2p,则返回cj1p,否则返回cj2p