http://www.web008.net

DB2转MySQL小关注点

废话笔者就不说了,间接步向正题...

>>.数据类型基本是通用的,须求退换的数据类型原则是“小范围变大规模”,也便于驾驭,不会废弃数据仍旧精度。

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不能够创制种类,DB第22中学的类别(nextVal卡塔尔,需求在MySQL中自定义函数实现种类,作者的写函数就不贴出来了,

     请参谋以下功底版链接,遵照自个儿的须要周详就能够:

    

    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(卡塔尔(英语:State of Qatar) 调换数值型

 

>>.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 HavalS 锁行,锁表 改为  MySQL 的 排他锁 FOR UPDATE (PS:这么些结论是自个儿看两种数据库资料相比较得来的,未有通过测验,假若有大神知道的话,多多关照,三哥在那先谢过了!)

 

>> 假如现身“You can't specify target table for update in FROM clause”  ,即不可能先select出近似表中的有些值,再update这么些表(在同一语句中卡塔尔(英语:State of Qatar),改写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了

 

 -----------------------------------------------------小编是分隔线-----------------------------------------------------------

 一时一刻就想到这么多,比较多用法未有提交实例,有为数不少困难作者还尚未缓慢解决可能注脚,持续更新...

 

郑重声明:本文版权归美高梅163888所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。