Oracle decode函数用法详解

 更新时间:2023年05月26日 11:14:07   作者:Zephyr Y  
本文详细讲解了Oracle中decode函数的用法,文中有相关的图文示例,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一 两种语法格式

1 decode(expression,value,result1,result2)

如果expression=value,则输出result1,否则输出result2

例子:

(1+2=3,输出a)

(1+2≠4,输出b)

2 decode(expression,value1,result1,value2,result2,value3,result3......,default)

如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3,

若expression不等于所列出的所有value,则输出为default

例子:

(score=100,输出'NO.1',score='90',输出‘NO.2’,score='70',输出‘NO.3’,其他值输出'Other')

二 应用

1 使用decode函数分段

将成绩表中分数大于90分的分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,60分以下为不及格。

(sign()函数的作用是,判断参数的值大于0则返回1,等于0则返回0,小于0则返回-1;

 如图,当socre大于或等于90时,socre-90>=0,sign()函数返回1或0,则输出‘优秀’,

在score-90<0的情况下,再判断socre-80,socre-80>=0,sign()函数返回1或0,则输出‘良好’,

以此类推,用decode()的嵌套配合sign()函数来实现对分数的分段以及相应的输出,

最后60分以下的就default为‘不及格’就可以了,可以看到我们的Tony老师的分数就不及格了)

2 使用decode函数对表做行列转换

如图所示,有一张三个科目的成绩表,各科目名称和相应的分数呈现在行中,

现想将各科目名称转换为列名,每列的内容为对应科目的分数。

如图,先用decode函数判断subject为Chinese时,输出score,不为Chinese时,输出为NULL,

因为共有三个科目,所以输出其中一个科目的分数时,其他科目的分数为NULL,这里只需要

用sum()函数来实现聚合的作用,将空值去除掉就可以了)

sum()函数分别将name为John的每个列的值相加,如Chinese列,80+NULL+NULL=80,再将name为Will的每个列的值相加,然后group by将name分组,最终达到如上图聚合的效果)

到此这篇关于Oracle decode函数用法详解的文章就介绍到这了,更多相关Oracle decode函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • oracle数据库的删除方法详解

    oracle数据库的删除方法详解

    这篇文章主要介绍了oracle数据库的删除方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Oracle自定义脱敏函数的代码详解

    Oracle自定义脱敏函数的代码详解

    这篇文章主要介绍了Oracle自定义脱敏函数的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • oracle 存储过程加密的方法

    oracle 存储过程加密的方法

    oracle 存储过程的加密方法小结
    2008-12-12
  • 基于OGG实现Oracle实时同步MySQL的全过程

    基于OGG实现Oracle实时同步MySQL的全过程

    这篇文章详细阐述了基于OGG实现Oracle实时同步MySQL全过程,文中通过图文结合和代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-11-11
  • oracle 11g RAC 常用命令整理分享

    oracle 11g RAC 常用命令整理分享

    很多朋友会经常用到oracle 11g RAC的命令,今天我也用到了,同时也整理了一些常用的命令,以备不时之需
    2012-11-11
  • 解决ORA-12154 TNS无法解析指定的连接标识符问题

    解决ORA-12154 TNS无法解析指定的连接标识符问题

    Oracle11g server 64bit服务器端安装在Windows Server2008 Enterprise上,安装Oracle11g client 32bit,通过SQL Plus以sysdba身份连接数据库,并且创建表空间、用户、授权成功,在连接数据库时出现问题,下面讲解ORA-12154无法解析指定的连接标识符问题,感兴趣的朋友一起看看
    2024-01-01
  • Oracle计算时间差常用函数

    Oracle计算时间差常用函数

    这篇文章主要介绍了Oracle计算时间差常用函数,涉及用法代码及示例,具有一定参考价值。需要的朋友可以了解下。
    2017-09-09
  • Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码

    Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码

    INSTR的第三个参数为1时,实现的是indexOf功能;为-1时实现的是lastIndexOf功能,具体实现如下,感兴趣的朋友可以参考下哈下,希望对大家有所帮助
    2013-05-05
  • 数据库ORA-01196故障-归档日志丢失恢复详解

    数据库ORA-01196故障-归档日志丢失恢复详解

    这篇文章主要介绍了数据库ORA-01196故障-归档日志丢失恢复详解,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • Oracle数据库迁移所有文件到新挂载磁盘路径

    Oracle数据库迁移所有文件到新挂载磁盘路径

    根据实际须要,有时安装了oracle以后须要扩展磁盘空间时,每每是新增一个单独的文件路径并挂载存储,这时便须要总体迁移数据库文件数据库,本文就来介绍一下Oracle数据库迁移所有文件到新挂载磁盘路径
    2024-01-01

最新评论