oracle向mysql移植

本文提供了从Oracle数据库移植到MySQL数据库的详细指南。包括sequence生成、sysdate使用、substr和nvl函数转换等内容。还涉及到了复杂的查询转换、日期格式化、子查询处理等高级主题。

有一些没有使用数据库中间件的软件可能会碰到在不同的应用场景需要用不同的数据库,这样可能就需要将数据库代码做移植,我这里整理了一些从oracle到mysql的移植过程中的注意事项:

 

1。sequence生成
可以用类似的东西来做,如下:  
  create   table   myseq   (   seq   varchar(8));  
  insert   into   myseq   values('0');  
  update   myseq   set   seq   =   last_insert_id(seq+1);  
  select   last_insert_id();  
  这东西完全跟oracle的sequence一致。即使在update之后,select之前有其它session也update了,本session得到的,仍然是自己update的那一个值。

2。sysdate转为sysdate()

3.substr装换,基本不需要转换

4。nvl转换为ifnull

5。数字转换为字符串的to_char函数不用,直接用即可,不用函数转换


6。日期格式的to_char转换为date_format
oracle:  to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
mysql:  select date_format(now(),'%Y-%m-%d %H-%i-%S')

7.to_date()装换,删除转换,mysql支持自动转换

8。decode()转换,
case when flag=0 then '成功' else '失败' end

9。rownum转换,分页转换
querySql = "select * from  ( select rownum rnm, a.* from ( " + strQuery
      //  + ") a where rownum <= " + getPageEndRow()
        //+ ") where rnm > " + getPageStartRow();

转换为:
querySql = "select * from  ( select 1 rnm, page_a.* from ( " + strQuery
    + ") page_a LIMIT " + getPageStartRow() + "," + getPageSize() + " ) select_page";

 

10。from子查询转换,为子查询定义别名
select count(*) from (
select a.login_no,a.LOGIN_NAME,a.EXPIRE_TIME,b.orgname,a.CONTRACT_PHONE,a.info_flag,a.login_level,a.group_id  from DLOGINMSG a left outer join dchngroupinfo b on a.group_id=b.orgno  where 1=1  and a.login_no like '%test%'
) subselect

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值