文章来源:decode函数的使用
decode的几种用法
1.使用decode判断字符串是否一样
decode(value,if 1,then 1,if 2,then 2,if 3,then 3,……,else)
含义为:
if 条件 = 值1 then return(value 1) if 条件 = 值2 then return(value 2) if 条件 = 值3 then return(value 3) …… else return(default) end if
讯享网
栗子:
讯享网>select empno,decode(empno,7396,'smith',7499,'allen',7521,'ward',7566,'jones','unknow') as name from emp where rownum <= 6; >7369 smith 7499 allen 7521 ward 7566 jones 7654 unknow 7698 unknow
2.使用decode比较大小
如下,和min起的作用是一样的。
select decode (sign(var1-var2),-1,var1,var2) from dual
其中 sign是符号函数,若函数内为负数返回-1,若为正数返回1,若为0返回0.若把-1改为1,则作用和max相同。
栗子:
# 取小的数 >select decode(sign(100-90),-1,100,90) from daul; >90 #取大的数 >select decode(sign(100-90),1,100,90); >100
3.使用decode函数分段
讯享网>select ename,sal, decode(sign(sal-10000), 1,'high sal', 0,'high sal', -1,decode(sign(sal-5000), 1,'mid sal', 0,'mid sal', -1,decode(sign(sal-1000), 1,'low sal', 0,'low sal', -1,'best low sal'))) from emp; >smith 800 best low sal allen 1600 low sal ward 5200 mid sal jones 15300 high sal james 5000 mid sal
4.利用decode实现表或者视图的行列转换
栗子
>select sum(decode(ename,'smith',sal,0) smith, sum(decode(ename,'allen',sal,0) allen, sum(decode(ename,'ward',sal,0) ward, from emp; > smith allen ward 800 1600 5200
5.使用decode函数根据表达式来搜索字符串
使用方法decode(expression,search_1,result_1,search_2,result_2,……,search_n,result_n,default)
其中decode函数用来比较表达式,和搜索字符串,如果匹配,则返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
栗子
讯享网>select ename, decode(instr(ename,'s'),0,'不含有s','含有s') as info from emp; >smith 含有s allen 不含有s ward 不含有s
#over,明天写窗口函数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/65942.html