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 是不是很简洁?
DECODE的语法:
DECODE(value,if1,then1,if2,then2,if3,then3,...,else),
表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。
初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
含义解释:
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ...... ELSIF 条件=值n THEN RETURN(翻译值n) ELSE RETURN(缺省值) END IF
使用方法:
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) --年份 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月销售金额 结构转化的SQL语句为: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12) 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)), sum(decode(substrb(month,5,2),'05',sell,0)), sum(decode(substrb(month,5,2),'06',sell,0)), sum(decode(substrb(month,5,2),'07',sell,0)), sum(decode(substrb(month,5,2),'08',sell,0)), sum(decode(substrb(month,5,2),'09',sell,0)), sum(decode(substrb(month,5,2),'10',sell,0)), sum(decode(substrb(month,5,2),'11',sell,0)), sum(decode(substrb(month,5,2),'12',sell,0)) from sale group by substrb(month,1,4); 例: select decode (col1,'1','11','2','22',0) from dual; 解释:如果为COL1字段为1时就返回值11,为2时返回值勤为22,其他的为0,你可以一直加的,成对匹配,最后一个多余的就是所有的其他情况!
使用案例:decode
select hr_stay_id, hr_person_name, depart_name, decode(stay_state, 1,'入住',2,'退房') stay_state, stay_money, stay_standard, to_char(begin_stay_date,'yyyy-mm-dd')begin_stay_date, begin_user_id, begin_person, begin_unit_id, begin_unit_name, begin_depart_id, begin_depart_name, create_date from hr_stay_info t where t.is_deleted=0 and t.stay_state=1
相关推荐
### 关于decode函数的使用详解 #### 函数概述 `decode()`函数在SQL语言中是一种常用的条件函数,它可以根据指定的表达式返回不同的值。这种功能对于数据转换、分类统计等场景非常有用。 #### 主要作用 `decode()`...
decode 函数也可以与其他函数结合使用,例如 LPAD 函数,可以实现一些复杂的字符串处理,例如: ```sql SELECT LPAD(DECODE(COUNT(记录编号),0,1,MAX(TO_NUMBER(记录编号)+1)),14,'0') 记录编号 FROM tetdmis ``` ...
在商品销售表`sale`的转化示例中,使用了DECODE函数来将每月的销售数据从行转为列,形成年份为行,各月销售金额为列的新结构。例如,为了计算每年1月的销售总额,使用了`SUM(DECODE(SUBSTRB(month,5,2),'01',sell,0)...
DECODE 函数还可以用来实现数据的格式转换,例如,在住房公积金报表置换实例中,我们可以使用 DECODE 函数来实现数据的转换和处理。 DECODE 函数是 Oracle 公司独家的功能强大的函数,它提供了简洁的运算方式、可控...
不过,考虑到给定文件标题和描述的限定,“decode函数.pdf”,在这里我们主要聚焦于Decode函数的使用和功能。Decode函数在Oracle SQL和PL/SQL中的重要性不可忽视,它是实现条件逻辑判断的关键工具之一。
在示例中,对于工资调整的问题,DECODE函数可以这样使用: ```sql SELECT DECODE(SIGN(salary - 8000), >=0, salary * 1.15, -- 工资在8000元以上,加15% , salary * 1.2, -- 工资在8000元以下,加20% salary) -...
下面我们将详细讲解DECODE函数的使用方法以及如何在列转行操作中应用它。 DECODE函数的基本语法如下: ```sql DECODE(column, value1, result1, value2, result2, ..., default_result) ``` 这里`column`是要检查的...
DECODE函数还可以与其他函数结合使用,例如`LPAD`,用于在输出前填充零,确保数据的格式一致。例如,如果你有一个自增的主键,想在输出时自动加1并前面补零,可以这样做: ```sql SELECT LPAD(DECODE(COUNT(记录编号...
### Oracle的DECODE函数详解 #### 一、DECODE函数简介 在Oracle数据库中,`DECODE`函数是一种非常实用的条件判断函数,其功能类似于编程语言中的`IF`语句。通过比较输入值与一系列预设值,该函数能够根据匹配情况...
要按学生ID分别显示语文、数学、英语的成绩,可以创建一个视图,使用`DECODE`函数将成绩列转换为单独的列。 创建视图的脚本如下: ```sql CREATE OR REPLACE VIEW cjd AS SELECT sid, DECODE(kcbm, '语文', cj,...
下面将详细介绍Oracle Decode()函数的使用技巧。 1. **基本语法**: Decode()函数的基本语法如下: ``` DECODE(source, value1, result1, value2, result2, ..., default_value) ``` 其中,`source`是要检查的...
这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决
在阅读博客文章《decode函数与case when 的妙用》时,作者可能分享了一些具体的示例和使用技巧,帮助我们更好地理解和掌握这两种方法。通过学习和实践,我们可以将这些知识应用于日常的数据库操作,优化数据处理流程...
在ASP(Active Server Pages)环境中,可以使用内置的`Server.URLEncode`函数进行URL编码,而解码则可以使用`Server.URLDecode`函数。`Server.URLDecode("编码后的字符串")`会返回解码后的原始字符串。例如,如果有...
Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数有更多的了解。 Oracle DECODE函数 Oracle DECODE函数是Oracle公司独家提供的功能,它是一个功能很强的...
`gzip124` 是一个压缩工具,其解码功能主要由 `decode` 或 `inflate_codes` 函数实现。这个函数是 gzip 解压过程中的关键部分,负责将压缩的二进制数据转换回原始格式。在理解这个过程之前,我们需要先了解一下 ...
`DECODE`函数的灵活性在于它可以处理多个可能的值,并且可以与其它函数如`LPAD`结合使用,增加数据处理的复杂性,如在生成自动递增的序列号并添加前导零: ```sql SELECT LPAD(DECODE(COUNT(记录编号), 0, 1, MAX...