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 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ...... ELSIF 条件=值n THEN RETURN(翻译值n) ELSE RETURN(缺省值) END IF

  • 04

    该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ...... ELSIF 条件=值n THEN RETURN(翻译值n) ELSE RETURN(缺省值) 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  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月销售金额

  • 07

    结构转化的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)),

  • 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 created. SQL> select * from t; USERNAME                        DEFAULT_TABLESPACE              LOCK_DATE ------------------------------ ------------------------------ --------- SYS                             SYSTEM SYSTEM                          SYSTEM OUTLN                           SYSTEM CSMIG                           SYSTEM SCOTT                           SYSTEM EYGLE                           USERS DBSNMP                          SYSTEM WMSYS                           SYSTEM                          20-OCT-04 8 rows selected. SQL> select username,decode(lock_date,null,'unlocked','locked') status from t; USERNAME                        STATUS ------------------------------ -------- SYS                             unlocked SYSTEM                          unlocked OUTLN                           unlocked CSMIG                           unlocked SCOTT                           unlocked EYGLE                           unlocked DBSNMP                          unlocked WMSYS                           locked 8 rows selected. SQL> select username,decode(lock_date,null,'unlocked') status from t; USERNAME                        STATUS ------------------------------ -------- SYS                             unlocked SYSTEM                          unlocked OUTLN                           unlocked CSMIG                           unlocked SCOTT                           unlocked EYGLE                           unlocked DBSNMP                          unlocked WMSYS8 rows selected.

(0)

相关推荐

  • 调用未公开的API函数的方法

    Windows SDK开发包中并未提供所有的API函数,在本文中我将讨论如何调用这种未公开的API函数。 事实上所有未公开的API函数都和其它的API函数一样包含在系统的动态链接库中,调用这些函数的方 ...

  • EXCEL表格ISBLANK函数使用方法图解

    EXCEL表格ISBLANK函数使用方法图解.ISBLANK函数是检查一个文本是否使用了空单元格的函数,是则返回TRUE,否则返回FALSE,那如何在EXCEL表格中使用ISBLANK函数呢?下面小编 ...

  • Excel如何运用函数?Excel函数运算方法介绍

    Excel是办公室自动化中非常重要的一款软件.Excel中所提的函数其实是一些预定义的公式,它们使用一些称为参数的特定数值按特定的顺序或结构进行计算,下面为大家分享Excel函数运算方法,一起来学习吧 ...

  • Word中的函数怎么使用?Word函数使用方法

    相信大家对Excel所提供的丰富的函数支持都很钟爱.但是对于部分用户来说,仍然习惯于使用Word来处理表格,在这种情况下,能够使用Excel中部分常用的函数功能呢?答案是肯定的.下面小编就都大家使用W ...

  • excel的mid函数如何使用?excel的mid函数使用方法

    在编辑excel的时候想要使用mid函数,如何使用呢?其实就是数字各个位数求和的函数,如何将数字各个位数相加求和呢?下面讲解具体的mid函数的使用方法 步骤 1.这里以求三位数497的个位.十位.百位 ...

  • EXCEL表格中CONCATENATE函数使用方法图解

    CONCATENATE函数是将多个文本字符串合并成一个字符串的函数,那如何在EXCEL表格中使用CONCATENATE函数呢?下面小编就为大家介绍一下,来看看吧! 方法/步骤 打开EXCEL表格,点击 ...

  • EXCEL表格中的NETWORKDAYS函数使用方法图解

    NETWORKDAYS函数是计算两个日期之间完整工作日的天数,那如何在EXCEL表格中使用NETWORKDAYS函数呢?下面小编就为大家详细介绍一下,来看看吧! 方法/步骤 打开EXCEL表格,点击公 ...

  • EXCEL表格中的HARMEAN函数使用方法图解

    HARMEAN函数表示返回一组正数的调和平均数,下面小编就为大家介绍EXCEL表格中的HARMEAN函数使用方法,来看看吧! 步骤 打开EXCEL表格,点击公式按钮,如图 点击插入函数按钮,如图 在弹 ...

  • 在EXCEL表格中DAYS360函数使用方法图解

    DAYS360函数表示计算天数差值的起止日期,那如何在EXCEL表格中使用DAYS360函数呢?下面小编就为大家详细介绍一下,来看看吧! 方法/步骤 打开EXCEL表格,点击函数按钮,如图 点击插入函 ...