decode函数是什么意思(decode函数)

逄竹紫
导读 大家好,精选小编来为大家解答以上问题。decode函数是什么意思,decode函数很多人还不知道,现在让我们一起来看看吧!1、解码功能是ORACLE

大家好,精选小编来为大家解答以上问题。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、

本文到此结束,希望对大家有所帮助。

标签:

版权声明:本文由用户上传,如有侵权请联系删除!