Oracle中decode函数如何使用


这篇文章将为大家详细讲解有关Oracle中decode函数如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。DECODE函数是ORACLE PL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢? 先构造一个例子,假设我们想给这些职员加工资,其标准是:工资在8000元以下的加20%;工资在8000元或以上的加15%,通常的做法是,先选出记录中的工资字段值 —>select salary into var-salary from employee,然后对变量var-salary用if-then-else或 case when then else 免费云主机域名end之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value等于if1时,DECODE函数的结果返回then1,……,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能的。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、表、视图结构转化
现有一个商品销售表sale,表结构为:
  month    char(6)      –月份
  sell    number(10,2)   –月销售金额  现有数据为:
  200001  1000
  200002  1100
  200003  1200
  200004  1300
  200005  1400
  200006  1500
  200007  1600
  200101  1100
  200202  1200
  200301  1300  想要转化为以下结构的数据:  year    char(4)      –年份
  month2   number(10,2)   –1月销售金额
  month3   number(10,2)   –2月销售金额
  month4   number(10,2)   –3月销售金额
  month5   number(10,2)   –4月销售金额
  month6   number(10,2)   –5月销售金额
  month7   number(10,2)   –6月销售金额
  month7   number(10,2)   –7月销售金额
  month8   number(10,2)   –8月销售金额
  month9   number(10,2)   –9月销售金额
  month20  number(10,2)   –10月销售金额
  month21  number(10,2)   –11月销售金额
  month22  number(10,2)   –12月销售金额结构转化的SQL语句为:
create or replace view
v_sale(year,month2,month3,month4,month5,month6,month7,month7,month8,month9,month20,month21,month22)
as
select
  substrb(month,1,4),
  sum(decode(substrb(month,5,2),’01’,sell,0)),
  sum(decode(substrb(month,5,2),’02’,sell,0)),
  sum(decode(substrb(month,5,2),’03’,sell,0)),
  sum(decode(substrb(month,5,2),’04’,sell,0)),补充1:
有学生成绩表student,现在要用decode函数实现以下几个功能:成绩>85,显示优秀;>70显示良好;>60及格;否则是不及格。
假设student的编号为id,成绩为score,那么:
select id,
decode(sign(score-85),
1,’优秀’,
0,’优秀’,
-1, decode(sign(score-70),
1,’良好’,
0,’良好’,
-1, decode(sign(score-60),
1,’及格’,
0,’及格’,
-1,’不及格’)))
from student;补充2:
Decode函数的语法结构如下:
decode (expression, search_1, result_1)
decode (expression, search_1, result_1, search_2, result_2)
decode (expression, search_1, result_1, search_2, result_2, …., search_n, result_n)
decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, …., search_n, result_n, default)decode函数比较表达式和搜索字,如果匹配返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。关于Oracle中decode函数如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: 在青云上部署oracle rac全过程

节点 Cpu 内存 OS db01 8cores 16G Oracle Linux Server release 6.6 (x86_64) db02 8cores 16G Oracle Linux Server release 6.6 (x86_64) [ro…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/04 10:06
下一篇 01/04 10:07