oralce遷移Mysql問題總結

最近從oracle數據庫遷移到Mysql, 總結了一些不兼容和須要注意的地方,持久層用的Mybatismysql

1 guid儘可能用代碼生成sql

現象:sys_guid()  mysql報錯,mysql對應的爲UUID(),可是帶橫線,須要替換爲  replace(uuid(),'-',''),因此最好用代碼生成, 這樣直接就通用了數據庫

2 最好不用nvl、ifnull等特性函數oracle

現象:nvl爲oracle特性函數,在mysql報錯,統一替換爲case when then else end函數

3 子查詢請帶上別名ui

現象:子查詢不帶別名oracle能夠經過,mysql語法錯誤spa

4 最好不用decode()函數3d

現象:同nvl,替換爲case when then else endcode

5 刪除語句不要給表加別名blog

現象:mysql刪除語句不支持表別名(可是Oracle支持,因此爲了通用刪除時不要使用別名)

6 刪除語句最好加上from關鍵字

現象:   mysql刪除必須是delete from  table,oracle能夠是delete table爲了通用要加上from

7 字段別名統一大寫

現象:mysql沒有自動轉換爲大寫,oracle會自動轉換爲大寫,爲了代碼能統一取值,別名統一大寫

8 分頁查詢沒有找到兼容的寫法,找到簡單改寫方法

簡單修改的辦法:rownum替換爲@num,否則就是從新寫一個mysql分頁

原oracle

 

 

 

mysql

 

 

 

9 批量插入不要用insert all,用兼容寫法

現象:insert all等語法mysql不支持,報錯

改成

 

 

10 日期沒法兼容,有轉換方法

現象:以前的to_date寫法致使Mysql報錯

改成拆分兩份

 

 

11不用 || 連字符

現象:mysql不支持,統一改成concat(str,str2)函數

12 concat函數只能使用兩個參數

現象:不能使用concat(str,str2,str3),mysql支持,oracle不支持

13 wm_concat()行列轉換沒法兼容,有轉換方法

方案:oracle wm_concat() 對應mysql group_concat()

14 從oracle遷移到mysql的數據,number類型被Mysql默認成了這個鬼樣子(不肯定是否是遷移引發)

現象:mysql顯示類型

 

 

致使報錯

 

 

方案:修改字段小數點爲0,若是肯定不是遷移過程引發,則須要整理腳本統一修改

其實一、二、三、四、五、六、七、九、十一、12項是能夠加入開發規範和開發禁用列表的

相關文章
相關標籤/搜索