文档章节

Oracle中decode函数 <-> MySQL使用case when替换实现

Jacktanger
 Jacktanger
发布于 2017/07/25 23:28
字数 308
阅读 38
收藏 0
点赞 0
评论 0

    公司有一个项目,以前使用的是Oracle数据库,最近迁移到MySQL上面,在迁移过程中,发现由于两种不同数据库之间差异,存在一个情况:Oracle中的SQL在MySQL中执行报错。

    通过控制台堆栈信息,发现是 decode函数在MySQL中是不存在的,于是,找资料使用MySQL中行得通的写法来替代Oracle中的decode函数。

    首先要知道Oracle中decode函数的作用。

1.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

2.MySQL中等价实现,方法不止一种,此处只提供一种亲测可行的方法:

    使用case when:

    case 
        when Boolean_expression when_expression then result_expression
            [ ...n ]
        [ 
            else else_result_expression
        end

3.举例说明

    Oracle:select decode(pay_name,'aaaa','bbb',pay_name),sum(comm_order),sum(suc_order),sum(suc_amount) From  payment.order_tab  group by decode(pay_name,'aaaaa','bbbb',pay_name)        

    MySQL:select case when pay_name='aaa' then 'bbb' else pay_name end ,sum(comm_order),sum(suc_order),sum(suc_amount) From  payment.order_tab  group by case when pay_name='aaa' then 'bbb' else pay_name end

© 著作权归作者所有

共有 人打赏支持
Jacktanger
粉丝 10
博文 81
码字总数 42025
作品 0
浦东
程序员
oracle的查询结果按照in条件顺序输出

业务需要,通过lucene查出符合搜索条件的id,然后在详情表里查出这些id的详情 SELECT id,QUESTION,QUESTIONCOMMENT FROM "ASKDBA_QUESTION" where ID IN (63,62,65,61,64); 其中id是根据搜索...

王小明123 ⋅ 2012/10/22 ⋅ 2

decode 与 case when

一,DECODE函数 其基本语法为: Sql代码 DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else) 表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一...

李永china ⋅ 2016/09/23 ⋅ 0

mondrian支持的sql函数oracle和postgresql实现以及深度功能实现

##########分组字段实现 在schema的physicalschema中的columnDefs中采用SQL自定义一列,使用case when <CalculatedColumnDef name='quarter' type='String'> <ExpressionView> <SQL dialect=......

仔仔1993 ⋅ 05/24 ⋅ 0

ORACLE常用SQL技巧

ORACLE常用SQL技巧 1. SELECT子句中避免使用 “” 当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘’ 是一个方便的方法.不幸 的是,这是一个非常低效的方法. 实际上,ORACLE在解...

程序员YB ⋅ 2011/12/06 ⋅ 1

oralce与mysql的区别

有些人说Oracle没有限制,实际上他们说得可能是Oracle不支持LIMIT语法.不过可以rownum虚列来实现,不过会更加麻烦.   2. Oracle不支持偏移(offset)语法. 3. Oracle的复制功能可能比MySQL更加...

wersdffg ⋅ 2015/10/17 ⋅ 0

sql笔记(来自oracle 的scott用户)

1.区分sql命令和sqlplus(oracle提供)-->sql不能缩写,sqlplus可以 2.mysql 不区分字符串的大小写, oracle区分 3.oracle 查询系统参数设置 : select from v$nls_parameters; alter sessio...

simpler ⋅ 2014/03/20 ⋅ 0

oracle 学习 笔记 随笔

1、配置数据名称的时候 有个SID 这个是ServiceID,服务ID,网络连接使用的。建议数据名称与SID一致。 安装oracle时候字符集选择utf-8,示例方案打钩。 为所有账户使用相同口令。设置口可能不...

AIting ⋅ 2016/11/27 ⋅ 0

oracle迁移mysql总结

最近我处理了一个项目的数据库迁移,从oracle迁移至mysql,其中的一项主要工作就是对代码中的sql进行改写。这里针对两个库的不同点做一下总结,以备后查。 oracle与mysql之常用函数的区别: ...

SawyerZhou ⋅ 2017/12/08 ⋅ 0

PLSQL常用函数(ORACLE)(1)

1)处理字符的函数   || 或 CONCAT---并置运算符。   格式∶CONCAT(STRING1, STRING2)   例:’ABC’|| ’DE’=’ABCDE’   CONCAT(‘ABC’,’DE’) =’ABCDE’      ASCII---返回...

_Tomorrow ⋅ 2016/04/25 ⋅ 0

ora2pg 8.9 发布,将Oracle迁移到PostgreSQL

ora2pg 8.9 发布了,该版本增加对 XMLType 数据导出的支持,为 Oracle 函数 substr() 和 decode() 使用 plpgsql 替换 plsql;PL/SQL 转换可在索引抽取的过程中进行;同时修复了一些关于外键导...

红薯 ⋅ 2011/11/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vuex学习

1、getters基本用法: 在store.js里面用const声明我们的getters属性。 const getters={ count:function (state) { return state.count +=100; }} export default new Vuex.S......

大美琴 ⋅ 31分钟前 ⋅ 0

292. Nim Game - LeetCode

Question 292. Nim Game Solution 思路:试着列举一下,就能发现一个n只要不是4的倍数,就能赢。 n 是否能赢1 true2 true3 true4 false 不论删除几,对方都能一把赢5 t...

yysue ⋅ 42分钟前 ⋅ 0

G6 关系数据可视化图形库 简单使用

官网 https://antv.alipay.com/zh-cn/g6/1.x/index.html 效果 首先生成给定数目的小球,并设置随机的颜色 按照顺序,设置小球的角度以及坐标 设置定时器,每隔一定的时间修改小球的角度和坐标...

阿豪boy ⋅ 45分钟前 ⋅ 0

6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩

zip压缩工具 zip命令可以压缩目录和文件,-r 压缩目录。 zip使用方法 zip 1.txt.zip 1.txt //压缩文件 zip -r 123.zip 123/ //压缩目录 unzip 1.txt.zip //解压 unzip 123.zip -d /root/456...

Linux_老吴 ⋅ 54分钟前 ⋅ 0

react-loadable使用跳坑

官方给react-loadable的定义是: A higher order component for loading components with dynamic imports. 动态路由示例 withLoadable.js import React from 'react'import Loadable fro......

pengqinmm ⋅ 今天 ⋅ 0

记录工作中遇到的坑

1、ios safari浏览器向下滚动会触发window resize事件

端木遗风 ⋅ 今天 ⋅ 0

桥接设计模式

1、概述: 将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化 如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构 桥接模式将继承模式转化成关联关系,他降...

职业搬砖20年 ⋅ 今天 ⋅ 0

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 今天 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 今天 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部