c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改
分頁(yè)方式不同,oracle使用rownum,mysql使用limit
使用hibernate的QBC不用修改,但hql和sql都應(yīng)該用統(tǒng)一方法修改
mysql子查詢(xún)必須帶別名
select * from (select * from city where city_id = 1) t? 別名(此處是t)必須加
存在差異的函數(shù)
a)日期轉(zhuǎn)字符串
Oracle寫(xiě)法:
select to_char(created_time,'YYYY-MM-DD HH24:MI:SS') from city where rownum <2;
Mysql寫(xiě)法:
select date_format(created_time,'%Y-%m-%d %T') from city limit 1;
b)字符串轉(zhuǎn)日期
Oracle寫(xiě)法:
select to_date('2008-08-08 08:08:08','YYYY-MM-DD HH24:MI:SS') from dual;
Mysql寫(xiě)法:
SELECT STR_TO_DATE('2008-08-08 08:08:08','%Y-%m-%d %T');
c)Oracle中decode函數(shù)
這個(gè)函數(shù)在Mysql中也有,不過(guò)功能完全不同,建議改成case語(yǔ)句形式
Oracle中:
select country_code,decode(country_code,'PRC','中國(guó)','USA','美國(guó)','其他') as country_name from city;
等價(jià)的case語(yǔ)句形式:
select country_code,(case country_code when 'PRC' then '中國(guó)' when 'USA' then '美國(guó)' else '其他' end) country_name from city;
而且第二個(gè)語(yǔ)句是標(biāo)準(zhǔn)Sql語(yǔ)法,Mysql和Oracle中都可以運(yùn)行
d)字符串截?cái)嗪瘮?shù)
Oracle中是substr,Mysql支持substr/substring兩種寫(xiě)法,使用方法也相同
Mysql中”delete”后面必須帶”from”關(guān)鍵字
避免使用子查詢(xún),Mysql中子查詢(xún)效率較低,建議改成join方式
Mysql中沒(méi)有序列,主鍵需要更改為自增長(zhǎng)
Mysql對(duì)存儲(chǔ)過(guò)程支持很差,不要在Mysql中使用存儲(chǔ)過(guò)程
Where子句里不要在字段上使用函數(shù),Mysql沒(méi)有函數(shù)索引
a)如果使用了lower或upper函數(shù),如果沒(méi)有大小寫(xiě)敏感的需求,建議將Mysql的數(shù)據(jù)庫(kù)字符集改為大小寫(xiě)不敏感,之后移除lower和upper函數(shù)
b)如果使用了日期轉(zhuǎn)換函數(shù)進(jìn)行比較,可以將轉(zhuǎn)換函數(shù)右移到常量上
Mysql中沒(méi)有位圖索引
總結(jié)
以上是生活随笔為你收集整理的c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 支付宝可以绑定存折吗
- 下一篇: centos 怎样下载php,cento