廢話我就不說了,直接進入正題... >>.數據類型基本是通用的,需要改動的數據類型原則是“小範圍變大範圍”,也容易理解,不會丟失數據或者精度。 DB2 > MySQL CHARACTER CHARINTEGER INTLONGTEXT LONGBLOBTIMESTAMP(Num) DATETIME( ...
廢話我就不說了,直接進入正題...
>>.數據類型基本是通用的,需要改動的數據類型原則是“小範圍變大範圍”,也容易理解,不會丟失數據或者精度。
DB2 ----------> MySQL
CHARACTER CHAR
INTEGER INT
LONGTEXT LONGBLOB
TIMESTAMP(Num) DATETIME(Num) or TIMESTAMP(Num)
>>.個性化改寫
1.DB2的CURRENT TIMESTAMP 對應 MySql的CURRENT_TIMESTAMP
2.偽表或者叫記憶體表
DB2: select expression from SYSIBM.SYSDUMMY1;
MySQL:select expression;
ORACLE:select expression from DUAL;
>>.MySQL不能創建序列,DB2中的序列(nextVal),需要在MySQL中自定義函數實現序列,我的寫函數就不貼出來了,
請參考以下基礎版鏈接,根據自己的需求完善即可:
http://www.jb51.net/article/76124.htm
PS:如果出現Error Code: 1449 The user specified as a definer ('root'@'%') does not exist 錯誤,則執行如下sql
grant all privileges on *.* to root@'%' identified by 'password';flush privileges;
>>.DB2大小寫不敏感,MySQL大小寫敏感(敲黑板)
>>.DB2的分頁採用的是rownumber() over(),MySQL的分頁使用關鍵字limit
>>.DB2.to_char() 轉為 MySQL.date_format(date,format) 轉換日期型 或者 convert() 轉換數值型
>>.DB2.to_date() 轉為 MySQL.str_to_date(str,format)
>>.DB2的連接符 ‘||’ 轉為 MySQL.concat(str1,str2,...) (PS:如有任何一個參數為NULL ,則返回值為 NULL)
>>.DB2.nvl(e1,e2) 轉為 MySQL.ifnull(e1,e2)
>>.DB2.decode(p1,p2,p3,p4) 轉為 MySQL.if(p1=p2,p3,p4)
DB2.decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值) 轉為 MySQL 的
case
when 條件 = 值1 then 返回值1
when 條件 = 值2 then 返回值2 ....(else 預設值)
end
>>.DB2.SYSDATE 轉為 MySQL.now()
>>.DB2.to_number 轉為 MySQL.cast()
>>.DB2 的 +1 DAY 轉為 MySQL 的 INTERVAL 1 DAY
>> DB2的 for update with RS 鎖行,鎖表 改為 MySQL 的 排他鎖 FOR UPDATE (PS:這個結論是我看兩種資料庫資料對比得來的,沒有經過測試,如果有大神知道的話,不吝賜教,小弟在此先謝過了!)
>> 如果出現“You can't specify target table for update in FROM clause” ,即不能先select出同一表中的某些值,再update這個表(在同一語句中),改寫DML增加一層中間表
如果出現“error code:1175”,則執行 SET SQL_SAFE_UPDATES=0 解除非主鍵更新保護
如果出現“Error Code: 1248. Every derived table must have its own alias mysql” 即不允許直接嵌套查詢,如下增加那個“t”
select * from (select * from a) t
>>DB2 中 很多語句最後會加一個 with ur(臟讀,未提交的數據也能查詢出來), MySQL顯然不支持這種寫法,抱歉,我對MySQL鎖這塊研究的不深,沒有找到匹配的寫法,暫時只能去除 with ur了
-----------------------------------------------------我是分隔線-----------------------------------------------------------
目前就想到這麼多,很多用法沒有給出實例,有許多難點我還沒有解決或者驗證,持續更新...