2025年decode函数

decode函数文章来源 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 条件

大家好,我是讯享网,很高兴认识大家。

文章来源: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,明天写窗口函数。

小讯
上一篇 2025-02-28 21:44
下一篇 2025-03-18 08:32

相关推荐

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