Oracle 之 DECODE()函数

您所在的位置:网站首页 返回多个值的函数是什么 Oracle 之 DECODE()函数

Oracle 之 DECODE()函数

2024-05-31 03:44| 来源: 网络整理| 查看: 265

DECODE函数是ORACLE PL/SQL是功能强大的函数之一

一:decode 函数同个条件两个值

select decode(-1,-1,4,3) from dual; 这个返回4,表示如果-1等于-1,则返回第一值4,否则返回第二个值3 扩展:

1、比较大小

  select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值

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

  例如:

  变量1=10,变量2=20

  则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

select decode(sign(10-20),-1,10,20) from dual; 判断条件完整的情况: select decode(sign(20-30),1,'大于的情况',0,'相等的情况','小于的情况')from dual 转换成java语法是: if((20-30)==1){ return '大于的情况' ; }else if((20-30) == 0 ){ return '相等的情况'; }else{ return '小于的情况'; }

  

 

二:decode 函数同个条件多个值(DECODE函数相当于一条件语句(IF))

格式:DECODE(条件,if1,返回值,if2,返回值,if3,返回值,...,else)。中文解析:

如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else

相当于if中的语法:

F 条件=值1 THEN     RETURN(返回值1) ELSIF 条件=值2 THEN     RETURN(返回值2)     ...... ELSIF 条件=值n THEN     RETURN(返回值n) ELSE     RETURN(缺省值) END IF

  

下面是一个实际例子业务是:

选课方式: 首先如果查选课方式为"0"的就取"是否成功标志"这个字段的值, 查询出来有:0 失败 1 已选 2 退选 然后查选课方式如果为1、2 即筛选和志愿这两个状态的 筛选状态,查出来数据有: 0 待筛选 如果是1即已筛选,则此时数据进入选课结果表中,那么要去判断选课结果表的成功标志 如果是 0 表示失败 如果是 1表示已选 如果是2 退选

decode(XKFS, '0', ( case xkcgbz when '0' then '2' when '1' then '4' when '2' then '1' end ) ,'1',( case sxzt when '1' then (case xkcgbz when '1' then '4' when '0' then '2' when '2' then '1' end) when '0' then '3' when '2' then '1' end ),'2',( case sxzt when '1' then (case xkcgbz when '1' then '4' when '0' then '2' when '2' then '1' end) when '0' then '3' when '2' then '1' end )) XKCGBZ


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3