Oracle中decode函数 <-> MySQL使用case when替换实现
公司有一个项目,以前使用的是Oracle数据库,最近迁移到MySQL上面,在迁移过程中,发现由于两种不同数据库之间差异,存在一个情况:Oracle中的SQL在MySQL中执行报错。 通过控制台堆栈信息,发现是 decode函数在MySQL中是不存在的,于是,找资料使用MySQL中行得通的写法来替代Oracle中的decode函数。 首先要知道Oracle中decode函数的作用。 1.decode的作用: 使用:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 含义: 2.MySQL中等价实现,方法不止一种,此处只提供一种亲测可行的方法: 使用case when: case 3.举例说明 Oracle:selectdecode(pay_name,'aaaa','bbb',pay_name),sum(comm_order),sum(suc_order),sum(suc_amount)Frompayment.order_tabgroupbydecode(pay_name,'aaaaa','bbbb',pay_name) MySQL:selectcasewhenpay_name='aaa'then'bbb'elsepay_nameend,sum(suc_amount)Frompayment.order_tabgroupbycasewhenpay_name='aaa'then'bbb'elsepay_nameend (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |