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)。