大家好,精选小编来为大家解答以上问题。decode函数是什么意思,decode函数很多人还不知道,现在让我们一起来看看吧!
1、 解码功能是ORACLE PL/SQL的强大功能之一。目前只有ORACLE的SQL提供这个功能,其他数据库厂商的SQL实现还没有这个功能。解码有什么用?首先,构造一个例子。假设我们要给知行员工涨工资。标准是:8000元以下的工资增加20%;交8000元以上加15%。通常的做法是先选择记录中的薪资字段值?从employee中选择salary到var-salary,然后用if-then-else或choose case等流控制语句判断变量var-salary。如果使用DECODE函数,那么我们可以省略这些流控制语句,这些语句可以直接由SQL语句完成。如下:选择解码(sign (salary-8000),1,薪水* 1.15,-1,薪水* 1.2,来自员工的薪水是不是很简洁?
2、 DECODE的语法:DECODE (value,if1,then1,if2,then2,if3,then3,else),这意味着decode函数的结果返回then1,如果值等于if1,或者如果值不等于任何if值,则为else。乍一看,DECODE只能做等式测试,而刚才,我们可以通过用一些函数或计算代替value,使DECODE函数具有大于、小于或等于的功能。
3、 该功能的含义如下:
4、 如果条件=值1,则
5、 返回(转换值1)
6、 那么ELSIF条件=值2
7、 返回(转换值2)
8、 .
9、 ELSIF条件=值n那么
10、 返回(转换值n)
11、 其他
12、 返回(默认值)
13、 如果…就会结束
14、 该功能的含义如下:
15、 如果条件=值1,则
16、 返回(转换值1)
17、 那么ELSIF条件=值2
18、 返回(转换值2)
19、 .
20、 ELSIF条件=值n那么
21、 返回(转换值n)
22、 其他
23、 返回(默认值)
24、 如果…就会结束
25、 1.比较尺寸
26、 从dual中选择decode(sign(变量1-变量2),-1,变量1,变量2);-取较小的值。
27、 sign()函数分别返回0、1和-1,具体取决于值是0、正数还是负数。
28、 比如3360
29、 变量1=10,变量2=20
30、 然后sign(变量1-变量2)返回-1,decode的解码结果为“变量1”,达到取较小值的目的。
31、 2.表和视图结构的转换
32、 有一个商品销售表sale,表结构为:
33、 month char(6)-月
34、 Sellnumber(10,2) -月销售额
35、 现有数据是:
36、 2000011000
37、 2000021100
38、 2000031200
39、 2000041300
40、 2000051400
41、 2000061500
42、 2000071600
43、 2001011100
44、 2002021200
45、 2003011300
46、 要转换成以下结构的数据3360
47、 year char(4)-年
48、 Month1number(10,2)-1)-一月销售额
49、 Month2number(10,2)-2)-二月销售额
50、 Month3number(10,2)-3)-三月份销售金额
51、 Month4number(10,2)-4)-四月销售额
52、 月5% (10,2)-五月份的销售额
53、 Month6number(10,2)-6)-六月销售额
54、 Month7number(10,2)-7)-7月销售额
55、 Month8number(10,2)-8)-八月份销售额
56、 9 # (10,2)月-9月销售额
57、 月10% (10,2)-十月销售额
58、 Month11number(10,2)-11)-11月销售金额
59、 Month12number(10,2)-12)-十二月销售额
60、 该结构转换后的SQL语句为:
61、 创建或替换视图
62、 销售(年,月
63、 as
64、 select
65、 substrb(month,1,4),
66、 sum(decode(substrb(month,5,2),'01',sell,0)),
67、 sum(decode(substrb(month,5,2),'02',sell,0)),
68、 sum(decode(substrb(month,5,2),'03',sell,0)),
69、 sum(decode(substrb(month,5,2),'04',sell,0)),
70、
70、
71、补充1:
72、有学生成绩表student,现在要用decode函数实现以下几个功能:成绩>85,显示优秀;>70显示良好;>60及格;否则是不及格。
73、假设student的编号为id,成绩为score,那么:
73、
74、
74、
75、补充2:
76、decode (expression, search_1, result_1, default)
76、
77、
77、
78、以下是一个简单测试,用于说明Decode函数的用法:
78、
79、Table created.
80、SQL> select * from t;
81、USERNAME DEFAULT_TABLESPACE LOCK_DATE
81、
82、8 rows selected.
83、
83、
84、USERNAME STATUS
84、
85、8 rows selected.
86、SQL> select username,decode(lock_date,null,'unlocked') status from t;
87、USERNAME STATUS
87、
88、
88、
本文到此结束,希望对大家有所帮助。
标签:
版权声明:本文由用户上传,如有侵权请联系删除!