• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Oracle中Decode()函数使用说明

Oracle中Decode()函数使用说明

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Oracle,Decode,函数,使用说明,含义,解释,DE等相关知识,希望本文的分享对您有所帮助

含义解释: 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

含义解释:

  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; --取较小值

select decode(sign(变量1-变量2), 1或0, 变量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);



从month中第5个字节开始取2个字节的值(substrb部分);
然后判断该值,若该值等于'01',则取sell列的值, 否则取0值(decode部分);
然后将这些累计求和(sum部分)。

在Oracle下,有substrb和substr等2个函数的,取的意义是完全不一样的,一个是根据字符取,一个是根据字节取。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅析drop user与delete from mysql.user的区别
  • mysql prompt的用法详解
  • 如何使用索引提高查询速度
  • 深入mysql创建自定义函数与存储过程的详解
  • JDBC数据库的使用操作总结
  • MySQL查询优化:LIMIT 1避免全表扫描提高查询效率
  • MySQL与Oracle的语法区别详细对比
  • 有关mysql中ROW_COUNT()的小例子
  • MySQL 百万级分页优化(Mysql千万级快速分页)
  • 从创建数据库到存储过程与用户自定义函数的小感

相关文章

  • 2018-12-05SQL触发器实例讲解
  • 2018-12-05求教连接mysql数据库的一个问题
  • 2018-12-05关于roc的10篇文章推荐
  • 2017-05-11Mac 将mysql路径加入环境变量的方法
  • 2018-12-05MySQL高级六——函数创建和使用
  • 2018-12-05SQL Server 中查看SQL句子执行所用的时间
  • 2018-12-05MySQL数据表字段内容的批量修改、清空、复制等更新命令
  • 2017-05-11MySQL笔记之数据类型详解
  • 2018-12-05MySQL分页性能优化指南
  • 2018-12-05根据IP跳转到用户所在城市的实现步骤

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql申明变量以及赋值
    • 影响SQL Server性能的关键
    • 详解MACOS中忘记MySQL root密码的解决方法
    • sql server 2005用户权限设置深入分析
    • oracle 分页 很棒的sql语句
    • sqlserver帐号被禁用如何处理
    • PostgreSQL的window函数整理
    • mysql导出导入中文表解决方法
    • EXPLAIN命令作用
    • 有关表的信息的10篇文章推荐

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有