oracle decode函数的使用

http://blog.csdn.net/weeknd/article/details/71157044


decode的几种用法
1:使用decode判断字符串是否一样
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
含义为
IF 条件=值1 THEN
    RETURN(value 1)
ELSIF 条件=值2 THEN
    RETURN(value 2)
    ......
ELSIF 条件=值n THEN
    RETURN(value 3)
ELSE
    RETURN(default)
END IF

sql测试
select empno,decode(empno,7369,'smith',7499,'allen',7521,'ward',7566,'jones','unkNow') as name from emp where rownum<=10
输出结果
7369 smith
7499allen
7521ward
7566jones
7654unkNow
769877827788783978442:使用decode比较大小
select decode(sign(var1-var2),-1,var 1,var2) from dual
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

select decode(sign(100-90),100,90) from dual
90
100-90=10>0 则会返回1,所以decode函数最终取值为90
反正
100
100-90=10>0返回1,判断结果为1,返回第一个变量100,最终输出结果为100
3:使用decode函数分段
工资大于5000为高薪,工资介于3000到5000为中等,工资小于3000为低薪
SELECT
ename,sal,
DECODE(SIGN(sal - 5000),255);"> 1,255);"> 'high sal',255);"> 0,255);"> - 1,255);"> DECODE(SIGN(sal - 3000),255);"> 1,255);"> 'mid sal',255);"> 0,255);"> - 1,255);"> DECODE(SIGN(sal - 1000),255);"> 1,255);"> 'low sal',255);"> 0,255);"> - 1,255);"> 'low sal')))
FROM
emp
SMITH 800 low sal
ALLEN1600WARD1250JOnes2975MARTINBLAKE 2850CLARK2450SCott3000mid sal
KING5000high sal
TURNER1500AdamS1100JAMES950 low sal
FORDMILLER13004:利用decode实现表或者试图的行列转换
SUM(DECODE(ENAME,'SMITH',SAL,0)) SMITH,'ALLEN',0)) ALLEN,'WARD',0)) WARD,'JOnes',0)) JOnes,'MARTIN',0)) MARTIN FROM EMP
输出结果如下
SMITH ALLEN WARD JOnes MARTIN
800 1250 2975 1250
5:使用decode函数来使用表达式来搜索字符串
decode (expression,search_1,result_1,search_2,result_2,....,search_n,result_n,default)
decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
ENAME,255);"> SAL,255);"> DECODE(INSTR(ENAME,'S'),255);"> '不含有s',255);"> '含有s') AS INFO
EMP
SMITH800 含有s
不含有s
含有s
BLAKE 不含有s

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...