从Oracle移植到MySQL的语句修改

缘起

  • 上周(32周)开始做Oracle到DRDS(MySQL)的改造,有一些各个平台通用的语法,要转换成MySQL支持的语法。
  • 但集成3天都没把环境搞好,也就没法验,所以也没啥工作量,本周一(8.13)把改好的一组走完流程,再继续改造下一组。

内容

0、前期(从页面找到xml)

  • (1)F12看到View页面的action/Name
  • (2)在Eclipse里ctrl+shift+R搜索Name,会找到NameAction.js,至于哪个方法,看F12里的报错。
  • (3)根据(2)里找到的方法,Ctrl+H搜索到controller文件
  • (4)根据(3)里的service关键字,Ctrl+H搜索到implement文件
  • (5)根据(4)里的Mapper,Ctrl+H搜索到xml文件
  • 根据项目现状整理的,不一定具有普适性

1、左,右连接

  • 右连接

    • Oralce:SELECT a.*, b.* from a(+) = b
    • MySQL:select a.*, b.* from a right join b
  • 左连接

    • Oralce:SELECT a.*, b.* from a = b(+)
    • MySQL:select a.*, b.* from a left join b
  • 哪边有(+)就允许为空
  • 实例

    • (1):select A.* ,B.* from A,B where A.id = b.id(+)改成select A.*,B.* from A left join B on A.id = B.id

2、函数名

  • to_date

    • Oracle中是to_date(),MySQL中支持STR_TO_DATE()
  • date_format/to_char

    • Oracle中是to_char(),MySQL中支持DATE_FORMAT()
  • nvl/ifnull

    • Oracle中是nvl(),MySQL中支持ifnull()

3、

99、杂项

  • xml里将LIKE '%' || UPPER(#{memberName}) || '%'改成LIKE UPPER("%"#{memberName}"%") (这种改法废弃掉了,oracle不支持)

    • 原因目前还不是太懂
  • xml里将LIKE '%' || UPPER(#{memberName}) || '%'改成

    <bind name="attrNameLike" value="'%' + attrName + '%'"/>      AND UPPER(A.ATTR_NAME) LIKE UPPER(#{attrNameLike})

履历&参考

履历

  • 20190814写第一稿(用时15min),整理一下吧。
  • 20190817增加了一点,主要是15号开始有新活了,这个改造的优先级低,得暂停,再写得9月份了,先补充一下后,省得忘记了。

参考

  • 主要是搜索引擎

相关推荐