Oracle 中 decode 函数用法

 更新时间:2017年10月25日 10:37:41   作者:qin_yaping  
这篇文章主要介绍了Oracle 中 decode 函数用法的相关资料,需要的朋友可以参考下

含义解释:

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

该函数的含义如下:

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)

      这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
 当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

使用方法:

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”,达到了取较小值的目的。

 2、此函数用在SQL语句中,功能介绍如下:

  Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。

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

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

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis
 eg:
 select decode(dir,1,0,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:
select sum(decode(siteno,'LT',1,0)),sum(decode(siteno,'SZ',1,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;
vinson

总结

以上所述是小编给大家介绍的Oracle 中 decode 函数用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • oracle数据库实现按多个字段排序

    oracle数据库实现按多个字段排序

    这篇文章主要介绍了oracle数据库实现按多个字段排序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Oracle表碎片整理操作步骤详解

    Oracle表碎片整理操作步骤详解

    数据库在日常使用过程中,不断的insert,delete,update操作,导致表和索引出现碎片是在所难免的事情,碎片多了,sql的执行效率自然就差了,下面看看如何表碎片整理,提高执行效率
    2013-11-11
  • plsql 连接oracle数据库详细配置的方法步骤

    plsql 连接oracle数据库详细配置的方法步骤

    这篇文章主要介绍了plsql 连接oracle数据库详细配置的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Linux静默安装Oracle11g部分问题的解决方法

    Linux静默安装Oracle11g部分问题的解决方法

    这篇文章主要为大家详细介绍了Linux静默安装Oracle11g部分问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Oracle 12c实现手工建库而非CDB及CDB创建的方法

    Oracle 12c实现手工建库而非CDB及CDB创建的方法

    这篇文章主要给大家介绍了关于Oracle 12c实现手工建库而非CDB及CDB创建的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用oracle 12c具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2017-10-10
  • Oracle自我补充之trunc()函数的使用方法

    Oracle自我补充之trunc()函数的使用方法

    TRUNC函数为指定元素而截去的日期值。下面通过本文给大家介绍Oracle自我补充之trunc()函数的使用方法,感兴趣的朋友一起看看吧
    2017-06-06
  • SQL查询包含下划线的字段内容操作

    SQL查询包含下划线的字段内容操作

    这篇文章主要介绍了SQL查询包含下划线的字段内容操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • oracle 10g 精简版安装步骤分享

    oracle 10g 精简版安装步骤分享

    今天遇到个软件要求安装oracle client端,于是考虑装精简版本的,以下是具体的安装步骤,特分享下,方便需要的朋友
    2014-06-06
  • EXECUTE IMMEDIATE用法小结

    EXECUTE IMMEDIATE用法小结

    EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.
    2009-09-09
  • oracle中的一些常用函数及示例

    oracle中的一些常用函数及示例

    这篇文章主要给大家介绍了关于oracle中的一些常用函数及示例的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11

最新评论