@
(10) 类型转行函数
最近在做项目迁移,Oracle版本的迁到Mysql版本,遇到有些oracle的函数,mysql并没有,所以就只好想自定义函数或者找到替换函数的方法进行改造.
所以本博客主要介绍Oracle兼容mysql改造方式以及注意事项,也就是介绍原本Oracle一些函数在Mysql的替换方法等等,适合给原本是Oracle版本的项目,想兼容Mysql版本.
Oracle的模糊匹配和mysql是不同的,在mybatis项目里,用Oracle,我们可能会这样写:where a like '%'|| #{参数} ||'%',不过放在mysql就不兼容了,mysql的做法是这样的where a like concat('%', #{参数} ,'%')
在Oracle还是mysql建表的时候,一般都不要用数据库关键字做表的字段,比如Order,CONDITION等等,特别是mysql就直接报错.假如用CONDITION做表字段,在写入数据的时候就要用CONDITION,加"◆"符号,例子
insert into table (UUID, ◆CONDITION◆, FLAG,CREATE_TIME)
values ('EAF472C6332241FBBBB22A37336BBD65', '', '${voteLZ_Boolean}', 'control/doApprFlowNew', str_to_date('13-06-2018 17:38:33', '%d-%m-%Y %H:%i:%s'));
oracle做数据排序的时候,有时候可以用nulls first或者nulls last将null值排在最前或者最后.不过迁到Mysql的话,mysql并没有提供类似函数,所以要怎么实现?下面给出解决方法:null值排在最后,用Mysql的IF和ISNULL函数.如果为空返回1,否返回0
select * from A order by IF(ISNULL(a),1,0),a desc
null值排在最前,用Mysql的IF和ISNULL函数.如果为空返回0,否返回1
select * from A order by IF(ISNULL(a),0,1),a desc
业务是这样的,加入查询到一个参数为null的话,就返回0,在Oracle里,可以用nvl函数nvl(参数,0),意思是参数为null,就返回0,避免空指针报错
上面是Oracle的做法,mysql的做法可以用IFNULL(参数,0)函数
Mysql例子
Oracle列转行函数可以用vm_comcat函数,mysql的用concat_ws函数,语法类似
Oracle类型转换函数cast语法是类似的,不过Oracle是没有int类型,只有number类型,所以就略有不同了
以上就是土嘎嘎小编为大家整理的Oracle和Mysql语法异同整理笔记相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!