oracle decode函数使用方法
decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。
操作方法
(01)DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途 呢? 先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很简洁?
(02)DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
(03)该函数的含义如下:IF 条件=值1 THENRETURN(翻译值1)ELSIF 条件=值2 THENRETURN(翻译值2)F 条件=值n THENRETURN(翻译值n)ELSERETURN(缺省值)END IF
(04)该函数的含义如下:IF 条件=值1 THENRETURN(翻译值1)ELSIF 条件=值2 THENRETURN(翻译值2)F 条件=值n THENRETURN(翻译值n)ELSERETURN(缺省值)END IF
(05)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”,达到了取较小值的目的。
(06)2、表、视图结构转化现有一个商品销售表sale,表结构为:month char(6) --月份sell number(10,2) --月销售金额现有数据为:200001 1000200002 1100200003 1200200004 1300200005 1400200006 1500200007 1600200101 1100200202 1200200301 1300想要转化为以下结构的数据:year char(4) --年份month1 number(10,2) --1月销售金额month2 number(10,2) --2月销售金额month3 number(10,2) --3月销售金额month4 number(10,2) --4月销售金额month5 number(10,2) --5月销售金额month6 number(10,2) --6月销售金额month7 number(10,2) --7月销售金额month8 number(10,2) --8月销售金额month9 number(10,2) --9月销售金额month10 number(10,2) --10月销售金额month11 number(10,2) --11月销售金额month12 number(10,2) --12月销售金额
(07)结构转化的SQL语句为:create or replace viewv_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)asselectsubstrb(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)),
(08)补充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;
(09)补充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值,则返回空值。
(10)以下是一个简单测试,用于说明Decode函数的用法:SQL> create table t as select username,default_tablespace,lock_date from dba_users;Table > select * from t;USERNAME DEFAULT_TABLESPACE LOCK_DATE------------------------------ ------------------------------ ---------SYS SYSTEMSYSTEM SYSTEMOUTLN SYSTEMCSMIG SYSTEMSCOTT SYSTEMEYGLE USERSDBSNMP SYSTEMWMSYS SYSTEM 20-OCT-048 rows > select username,decode(lock_date,null,'unlocked','locked') status from t;USERNAME STATUS------------------------------ --------SYS unlockedSYSTEM unlockedOUTLN unlockedCSMIG unlockedSCOTT unlockedEYGLE unlockedDBSNMP unlockedWMSYS locked8 rows > select username,decode(lock_date,null,'unlocked') status from t;USERNAME STATUS------------------------------ --------SYS unlockedSYSTEM unlockedOUTLN unlockedCSMIG unlockedSCOTT unlockedEYGLE unlockedDBSNMP unlockedWMSYS8 rows selected.
-
怎样制作电子版的贺卡?
在这个互联网如此发达的时代,每逢亲朋好友过生日,各种节日的到来之际,我们总想借助互联网送去自己的祝福。往往想给亲朋好友邮寄一张贺卡,然而网络搜索到的贺卡有时不尽人意,或没有创意,或没法表达自己的感情。那么,为什么不尝试亲手制作一张贺卡呢?步骤/方法(01)设置贺...
-
显卡位宽有哪些,有什么区别
为了更好的兼容,更好的DIY,我们需要了解一下显卡的位宽有哪些,有什么区别。操作方法(01)显卡位宽,主流有128bit还有64bit、128bit、256bit,显存的位宽越高,显卡的性能也就越好。(02)主流显卡采用128bit位宽,128位的显存能够适应大多数游戏。(03)显存的带宽=显存频率*显存位...
-
如何用ppt绘制直尺刻度
老师们在教学到认识刻度时会经常用到画刻度,尤其是出个练习题,画个刻度非常头疼,画不标准或者不规范,今天我来告诉老师们一个非常简单的绘制方法,一学就会。操作方法(01)先画一条水平的直线(大约10多厘米),和一条竖直线段(0.2-0.3厘米)。(02)将竖直的线段复制并粘贴几个(需要...
-
电脑键盘按键的功能有哪些?
电脑现在基本上是我们生活和学习中必不可少的工具,但是电脑上那么多按键,大家是否清楚它们的功能呢?那现在小编就和大家分享一下电脑键盘按键的功能。操作方法(01)首先,小编给大家介绍一下常见的键盘有101、104键等若干种。为了方便记忆,通常大家把他划分成主键区、功...