从oracle迁移到mysql需要注意的函数总结

1,oracle中的is null既可以判断数据库字段为null和空,但是在mysql中is null只能判断为null,无法判断为空,所以is null 就要换成 :(ISNULL(pub_user.subcorpdoc_id) || LENGTH(trim(pub_user.subcorpdoc_id))<1)

2,substr函数: 在oracle中substr函数是从0或者从1开始都是从首位开始截取,但是在mysql的起始位置只能从1开始,

书写方式一样:substr(字段名(string) , 起始位置(int) , 截取长度(int))

3,派生表:Every derived table must have its own alias

select语句嵌套查询,在mysql中出现派生表,需要从最里层开始执行,最后添加表名

4,数字和sql之间没有距离:在抓取到sql放入mysql中运行时,不要进行美化,因为有一些是连在一起,美化后就分开了。

5,rownum伪列:在oracle中的rownum就类似;mysql的limit

是分页的函数。rownum>=5 就等于limit 0,5

6,nvl:oracle中的nvl判断某个值是否为空值,若不为空值则输出,若为空值,返回指定值。换成mysql的ifnull就可以

7,oracle中的int函数:转换成MySQL中的整数类型就是 : SIGNED 

8, oracle中删除表记录delete no_yrhquery,delete直接跟表名,但是在mysql中delete后面还需要加一个from才可以。

9,事务超时:优化sql,解释sql成分,建立索引,索引建立时不能对这个表进行读写,会造成锁表。

10,oracle中的to char(sysdate,'yyyy-MM-dd')是查看当前日期:换成mysql中应该写成date_format( now( ), '%Y-%m-%d' )

11, oracle中的事务超时,可以把时间从1200改为tx.setTimeout(2400)

12,oracle中的导出报错,本地导出设备未就绪 ,下载文件出错 ,把路径改为D。记得看路径

接口测试:

做接口测试的时候,分两种,上传和下载。

先在代码里把路径打印下来:log.info("FTP下载路径为============" + "./" + fvo.getServeroutpath());

下载中文版本的ftp,配置,连接成功,把规定的格式文件放入路径里。

开始运行接口,抓取sql。查看数据库是否保存本地数据库。

13,oracle中的decode函数,在mysql中需要改成case when then

14,oracle中的instr函数:是查看字符在字符串的第几个位置,替换成mysql中locate函数,但是需要把前后位置跟oracle相反。

15,oracle与mysql中的日期和字符相互转换方法

date_format(date,'%Y-%m-%d')    -------------->oracle中的to_char(date,'yyyy-MM-dd');

str_to_date(date,'%Y-%m-%d')     -------------->oracle中的to_date(date,'yyyy-MM-dd');

16 , oracle中的decode函数相当于mysql的if函数,或者用case when替代

17,oracle中的trunc()函数,类似截取函数,按照指定格式截取

输入的数据。select trunc(sysdate, 'iw') from dual--本周第二天(周日为第一天)

在mysql中应该改为select DATE_FORMAT( DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW()) DAY), '%Y-%m-%d ')

18 , 在oracle中where 1=1order by 之间缺少空格是可以运行的,但是在mysql中不可以。但是在mysql美化后就可以 运行,代码还是不能运行

19 , 迁移数据库一定要把索引和外键迁移过来,要不然会导致查询很慢

20, oracle的日期转换函数:

to_char()将日期转按照一定格式换成字符类型

date_format(now(),'%Y-%m-%d')

oracle中的to_char(date,'yyyy-MM-dd');

21, oracle中的trunc函数:

select trunc(sysdate,'mm') from dual 截取到当前月

select trunc(sysdate,'dd') from dual) 截取到当前日

22, mysql查询当前月份第一天:

select DATE_ADD(curdate(),interval -day(curdate())+1 day)

mydql查询当前时间到日:

select curdate()

23, oracle中的to number函数替换为mysql中的cast

还要加上类型。

select cast(11 as unsigned int) /*整型*/

select cast(11 as decimal(10,2)) /*浮点型*/

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值