Oracle迁移MySQL 注意事项三两点(还不完整,继续整理中)

  • 大小写问题,MySQL是区分大小写的,而Oracle在执行SQL时会将字段统一为大写,所以在修改SQL和mapper文件的时候需要将小写的字段修改为大写
  • 字段别名问题
    如果该字段是通过MySQL进行操作,则别名默认生效,若该字段直接在后面加别名,则别名不生效,此时有两种处理方式

    • 修改jndi或者连接池 url的属性,增加 useOldAliasMetadataBehavior=true
    • 用函数进行转换后再重命名,如下所示:
         字段为varchar类型的用:trim(字段名) 别名 ,
         日期类型的:DATE_FORMAT( 字段名, '%Y-%m-%d %H:%i:%s' ) 别名
         数字类型的: truncate(字段名,保留小数位数)  别名;
  • 表别名问题

    • 查询时 括号内含查询时需将括号在外面指定别名;
      select * from (select user from user where user='root')
      这样查询的时候会提示错误 Every derived table must have its own alias
      需要将该SQL修改为 select * from (select user from user where user='root') t
    • 删除表中的数据时,不能给表指定别名

      delete from sssfm_pay_de t where t.pay_id='05CEFB0000000009A004E400000EA3'
      错误信息 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server 
          version for the right syntax to use near 't where t.pay_id='05CEFB0000000009A004E400000EA3'' at line 1
      将sssfm_pay_de的别名去掉则删除成功
  • 日期转换 oracle为 to_date,to_char, YYYY-MM-DD HH24:MI:SS
    MySQL 为 str_to_date ,date_format,%Y-%m-%d %H:%i:%s
  • 数字,字符串之间转换 oracle 可以用to_char,to_number
    MySQL为 cast(XXX as type),convert(XXX,type)
  • Oracle 默认值可以 是 oracle函数嵌套; 如oracle 可以用 to_char(sysdate,’YYYY’)
    MySQL 默认值设置仅可以使用部分函数,如sysdate(),不可以使用 date_format(sysdate(),’%Y’)
  • 一些Oracle特性的函数无法在MySQL中使用,若MySQL函数能够实现,则可以通过MySQL函数实现;如果不能实现,则考虑通过函数或者代码实现.

目前暂时整理的有这些,会在后面继续不断补充完善,也希望大家多多提出自己的意见和建议.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值