前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle decode函数

Oracle decode函数

作者头像
全栈程序员站长
发布2022-09-15 09:22:50
8310
发布2022-09-15 09:22:50
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一 两种语法格式

1 decode(expression,value,result1,result2)

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

例子:

Oracle decode函数
Oracle decode函数

(1+2=3,输出a)

Oracle decode函数
Oracle decode函数

(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

例子:

Oracle decode函数
Oracle decode函数

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

二 应用

1 使用decode函数分段

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

Oracle decode函数
Oracle decode函数

(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函数对表做行列转换

Oracle decode函数
Oracle decode函数

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

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

Oracle decode函数
Oracle decode函数

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

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

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

Oracle decode函数
Oracle decode函数

(sum()函数分别将name为John的每个列的值相加,如Chinese列,80+NULL+NULL=80,

再将name为Will的每个列的值相加,然后group by将name分组,最终达到如上图聚合的效果)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160061.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档