3.3.1. 数据类型
统一SQL支持将mysql数据类型转换为其他数据库类型,转换后映射关系如下, 部分数据类型转换后存在差异,可以点击相应类型链接查看详情。具体支持数据类型边界可参考:统一SQL使用边界规范
3.3.1.1. 数据类型转换映射表
序号 |
数据类型分类 |
MySQL 数据类型 |
转换后 GaussDB-Oracle 数据类型 |
转换后 Oracle19C 数据类型 |
转换后 oceanbase-oracle 数据类型 |
---|---|---|---|---|---|
1 |
数字 |
int(n) |
int |
int |
int |
2 |
数字 |
tinyint(n) |
int |
int |
int |
3 |
数字 |
mediumint |
int |
int |
int |
4 |
数字 |
bigint(n) |
bigint |
bigint |
bigint |
5 |
数字 |
double |
doubll precision |
binary_double,number |
binary_double,number |
6 |
数字 |
double(p,s) |
decimal(p,s) |
binary_double,number(p,s) |
binary_double,number(p,s) |
7 |
数字 |
bool,boolean |
tinyint |
number(1,0) |
number(1,0) |
8 |
时间&日期 |
datetime[(n)] |
timestamp(n) |
timestamp[(n)] |
timestamp[(n)] |
9 |
字符 |
text(n) |
text |
clob |
clob |
10 |
字符 |
tinytext |
text |
varchar2(4000) |
varchar2(4000) |
11 |
字符 |
mediumtext |
text |
clob |
clob |
12 |
字符 |
longtext |
text |
clob |
clob |
13 |
字符 |
varchar(n) |
nvarchar2(3*n) 0<n<=16379 |
varchar2(3n) 0<3n<=4000,clob 4000<3n |
varchar2(3n) 0<3n<=4000,clob 4000<3n |
14 |
大对象 |
blob(n) |
bytea |
blob |
blob |
15 |
大对象 |
tinyblob |
bytea |
blob |
blob |
16 |
大对象 |
mediumblob |
bytea |
blob |
blob |
17 |
大对象 |
longblob |
bytea |
blob |
blob |
18 |
其他类型 |
varbinary(n) |
bytea |
blob |
blob |
19 |
数字 |
signed |
不支持 |
不支持 |
不支持 |
20 |
时间&日期 |
time[(n)] |
不支持 |
timestamp[(n)] |
timestamp[(n)] |
21 |
字符 |
long |
text |
不支持 |
不支持 |
警告
- 统一SQL转换时支持的精度标度范围如下(且p>=s):
精度范围(p):1~38
标度范围(s):0~38
在使用上述数据类型时,请确保数据类型精度标度范围在支持范围内。
对于目标库数据类型无法处理的数据长度,在运行时会报错。
mysql的double数据类型转换成oracle19c的数据类型或者oceanbase_oracle的数据类型时,可以根据实际使用场景通过配置参数unisql.datatype.double.replace.binarydouble控制转换为不同的数据类型。 配置为1则转换成binary_double数据类型,配置为0则转换成number数据类型。具体可参考:unisql.conf文件说明
signed数据类型仅在用于cast类型转换时,统一SQL支持转换为bigint 注:gaussdb jdbc驱动不支持cast中字符串数值转signed,例如cast(‘12.12’ as signed)。