Oracle迁移到MySQL时数据类型转换问题_全球速看料

最近在做“去O”(去除Oracle数据库)的相关工作,需要将Oracle表结构转换成MySQL的表结构。这里面最重要的一点就是字段数据类型的变化。

1.ORACLE常用的数据类型与MySQL的对应关系

2.Oracle 中 varchar2(N) 与 varchar2(N char) 的区别

varchar(N)中是可以存储N个字节,而varchar(N char)是可以存储N个字符。

(对于UTF-8数据集来说:中文占两个字节,而英文占一个字节)


(资料图片)

1、varchar2(N):可以存储N byte长度,与字符数无关;例如varchar2(3),可以存储3个byte长度,如"啊a"、"aaa",与字符数无关;

2、varchar2(N char):可以存储N个字符(包括字母和汉字),与字节(byte)长度无关;例如varchar2(3 char),可以存储3个字符(包括字母和汉字),如"啊啊啊"、"aaa"、"啊aa",与字节(byte)长度无关;

说明:对于字符集为UTF-8的MySQL数据库,varchar(10)不区分中英文,可以存储10个中文汉字,或者10个字母或数字。所以从Oracle的Varchar2类型转换成varchar类型,长度保持不变即可满足。

3.number数值类型转化

最复杂莫过于number(p,s),以这个举例来说明如何转换。

p是指有效位数,s是小数位,需要以p和s的实际取值来确定mysql的字段类型:

当p,s均为空时,此时需要参考表内的实际数值或者根据具体业务来确定转换的类型。参考实际数值时,可以采用获取表中max(length(column_name))-1(包含一个小数点)来确定p,用max(length(column_name)-instr(column_name ||".","."))(查找小数点后的位数)来确定s的值。

另外,一定要注意MySQL的int(2)这种写法,并不是smallint的别名,不管是int(2)还是int(8),实际都是int。

4.其他注意事项

除了最复杂的number类型以外,其他字段还有几点小建议:

(1)除非要修改设计以支持秒以下级别的精度,Date最好转换为datetime而不要转为TIMESTAMP,因为TIMESTAMP存在2038年问题。

(2)ORACLE FLOAT不要转为MYSQL FLOAT,要转为DOUBILE避免精度丢失。

(3)处理char时,要注意最大的长度。

(4)BLOB,CLOB转换时,MYSQL也有众多不同长度的类型选择,最好根据实际业务需要和业务数据来判断选择何种长度。

标签:

x 广告
热消息:2021标致5008 SUV在欧洲有四种动力总成供选择

第二代标致5008在2017款车型上亮相,仅在几个月前进行了翻新,现在已经

环球要闻:三重门手稿错误(三重门手稿)

1、如果只是出现一处两处,你可以说是笔误。2、但是类似的低能语文错误

看点:2023安徽淮北市考录公务员拟录用人员公示(二)

根据省委组织部《安徽省2023年度考试录用公务员工作实施方案》等规定,

饶河县 党建引领带动乡村振兴|世界看热讯

□杨启坤本报记者潘宏宇饶河县坚持以“船歌向党”党建品牌为引领,实施

通宇通讯:6月12日获融资买入4822.99万元,占当日流入资金比例17.67%

同花顺数据中心显示,通宇通讯6月12日获融资买入4822 99万元,占当日买

焦点快看:锋线“9选3”!男篮12人大名单呼之欲出,张镇麟与曾凡博不稳了!

锋线“9选3”!男篮12人大名单呼之欲出,张镇麟与曾凡博不稳了!,张镇

抖音聊天火花标识断了怎么恢复_qq大火花恢复教程

1、打开QQ,登录,2、在聊天界面找到和你有大火花的人,点击进入聊天页

中国女排今日开启世联赛香港站征程 天天观天下

2023年世界女排联赛(以下简称“世联赛”)中国香港站将在13日开赛,世

d-二聚体介绍_d二聚体是什么_环球短讯

D-二聚体是临床判断是否有血栓形成等相关表现的实验室指标,属于凝血功

要闻:枯藤老树昏鸦 小桥流水人家什么意思_枯藤老树昏鸦 小桥流水人家

1、枯藤老树昏鸦,小桥流水人家,古道西风瘦马。2、夕阳西下,断肠人在

x 广告

Copyright ©  2015-2022 南极城市网版权所有  备案号:粤ICP备2022077823号-13   联系邮箱: 317 493 128@qq.com