oracle中decode函数的使用方法示例

前端之家收集整理的这篇文章主要介绍了oracle中decode函数的使用方法示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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测试

sql;"> select empno,decode(empno,7369,'smith',7499,'allen',7521,'ward',7566,'jones','unknow') as name from emp where rownum<=10

输出结果

2:使用decode比较大小


select decode(sign(var1-var2),-1,var 1,var2) from dual

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

sql测试

sql;"> select decode(sign(100-90),100,90) from dual

输出结果

100-90=10>0 则会返回1,所以decode函数最终取值为90

反正

sql;"> select decode(sign(100-90),1,90) from dual

输出结果

100-90=10>0返回1,判断结果为1,返回第一个变量100,最终输出结果为100

3:使用decode函数分段


工资大于5000为高薪,工资介于3000到5000为中等,工资小于3000为低薪

sql测试

sql;"> SELECT ename,sal,DECODE(SIGN(sal - 5000),'high sal',- 1,DECODE(SIGN(sal - 3000),'mid sal',DECODE(SIGN(sal - 1000),'low sal','low sal'))) FROM emp

输出结果

4:利用decode实现表或者试图的行列转换


sql测试

sql;"> SELECT SUM(DECODE(ENAME,'SMITH',SAL,0)) SMITH,SUM(DECODE(ENAME,'ALLEN',0)) ALLEN,'WARD',0)) WARD,'JONES',0)) JONES,'MARTIN',0)) MARTIN FROM EMP

输出结果如下

5:使用decode函数来使用表达式来搜索字符串


decode (expression,search_1,result_1,search_2,result_2,....,search_n,result_n,default)

decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

sql测试

sql;"> SELECT ENAME,DECODE(INSTR(ENAME,'S'),'不含有s','含有s') AS INFO FROM EMP

输出结果

Decode函数在实际开发中非常的有用

结合Lpad函数,如何使主键的值自动加1并在前面补0

select LPAD(decode(count(记录编号),max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis

eg:

select decode(dir,1) from a1_interval

dir 的值是1变为0,是0则变为1

比如我要查询某班男生和女生的数量分别是多少?

通常我们这么写:
select count(*) from 表 where 性别 = 男;
select count(*) from 表 where 性别 = 女;

要想显示到一起还要union一下,太麻烦了

用decode呢,只需要一句话

select sum(decode(性别,男,1,0)),sum(decode(性别,女,1,0)) from 表

eg:

sql;"> select sum(decode(siteno,'LT',0)),sum(decode(siteno,'SZ',0)) from facd605;

select sum(case siteno when 'LT' then 1 else 0 end),sum(case siteno when 'SZ' then 1 else 0 end) from facd605;

总结

以上就是本文关于oracle中decode函数的使用方法示例的全部内容,希望对大家有所帮助。欢迎参阅:等,感谢朋友们对本站的支持

原文链接:https://www.f2er.com/oracle/64733.html

猜你在找的Oracle相关文章