Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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
ALLEN1600WARD1250JOnes2975@H_429_17@mARTinBLAKE 2850CLARK2450SCott3000@H_429_17@mID sal
KING5000high sal
TURNER1500AdamS1100JAMES950 low sal
FORD@H_429_17@mILLER13004:利用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

大佬总结

以上是大佬教程为你收集整理的oracle decode函数的使用全部内容,希望文章能够帮你解决oracle decode函数的使用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。