数据类型转换

本文为您介绍迁移 Oracle 数据库的数据至 OceanBase 数据库 Oracle 租户的数据类型转换。

支持的转换类型

Oracle 数据库

OceanBase 数据库 Oracle 租户

描述

INTEGER

NUMBER(38,0)

INT

NUMBER(38,0)

SMALLINT

NUMBER(38,0)

BINARY_FLOAT

BINARY_FLOAT

二进制精度浮点数,是一种 32 位单精度浮点数数据类型。Oracle 数据库和 OceanBase 数据库 Oracle 租户一致。

BINARY_DOUBLE

BINARY_DOUBLE

二进制精度浮点数,是一种 64 位双精度浮点数数据类型。Oracle 数据库和 OceanBase 数据库 Oracle 租户一致。

DECIMAL(p,s)

NUMBER(p,s)

DEC(p,s)

NUMBER(p,s)

NUMERIC(p,s)

NUMBER(p,s)

REAL(p,s)

NUMBER(p,s)

FLOAT (p)

FLOAT (p)

NUMBER 数据类型的子类型。二进制精度范围为 [1,126]。FLOAT 不是浮点数。

Oracle 数据库和 OceanBase 数据库 Oracle 租户一致。

NUMBER[(p,s)]

NUMBER(p,s)

OceanBase 数据库 Oracle 租户:存储变长、十进制精度的定点数。也可以存储浮点数,此时 NUMBER 没有 p 和 s 参数。

Oracle 数据库:p 的取值范围为 1 ~ 38,s 的取值范围为 -84 ~ 127。

NCHAR(size)

NCHAR(size)

参数 size 的取值范围为 [1,2000],默认值和最小值为 1。存储大小为 size 字节的两倍。

CHAR (size [BYTE | CHAR])

CHAR (size [BYTE | CHAR])

参数 size 的取值范围为 [1,2000],默认值和最小值为 1。存储大小为 size 个字节或字符。

CHARACTER(n)

CHAR(n)

NVARCHAR2(size)

NVARCHAR2(size)

参数 size 的取值范围为 [1,32767]。字节的存储大小是所输入字符个数的两倍。

VARCHAR2(size [BYTE | CHAR])

VARCHAR2(size [BYTE | CHAR])

参数 size 的取值范围为 [1,32767]。存储大小为输入数据的字节或字符的实际长度,而不是 size 个字节或字符。

VARCHAR(size)

VARCHAR2(size)

RAW(size)

RAW(size)

OceanBase 数据库 Oracle 租户:以字节为单位。如果作为数据库中表的列,该参数最大支持存储 2000 字节的数据。如果作为 PL 变量,该参数最大支持存储 32767 字节的数据。

Oracle 数据库:最大支持 2000 字节

LONG

CLOB

OceanBase 数据库 Oracle 租户:48 MB

Oracle 数据库:LONG 4GB -1

LONG RAW

BLOB

OceanBase 数据库 Oracle 租户:48 MB

Oracle 数据库:

LONGRAW Size up to 2 gigabytes

ROWID

ROWID

表中一行的唯一地址(以 64 为基数的字符串表示)。

UROWID

UROWID

索引组织表的行(以 64 为基数的字符串表示)的逻辑地址。

TIMESTAMP (fractional_seconds_precision)

TIMESTAMP (fractional_seconds_precision)

OceanBase 数据库 Oracle 租户:范围和精确度取决于 scale 的值,取值范围为 [0,9]。最大值为 9(纳秒,即秒数精确至小数点 9 位),最小值为 0(秒,即秒数精确至小数点 0 位),默认值为 6。

Oracle 数据库:大小为 7 或 11 字节,取决于精度。

TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

OceanBase 数据库 Oracle 租户:阈值和精确度取决于 scale 的值,取值范围为 [0,9]。最大值为 9 (纳秒,即秒数精确至小数点 9 位),最小值为 0(秒,即秒数精确至小数点 0 位),默认值为 6。

Oracle 数据库:大小固定为13字节。

TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

TIMESTAMP[(fractional_seconds_precision)] WITH LOCAL TIME ZONE

DATE

DATE

OceanBase 数据库 Oracle 租户:取值范围为 0001-01-01 00:00:00~9999-12-31 23:59:59。

Oracle 数据库:有效日期范围:从公元前 4712 年 1 月 1 日到公元 9999 年 12 月 31 日。大小固定为 7 字节。

INTERVAL YEAR [(year_precision)] TO MONTH

INTERVAL YEAR [(year_precision)] TO MONTH

5 bytes

INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]

INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]

11 bytes

BLOB

BLOB

CLOB

CLOB

NCLOB

CLOB

不支持的转换类型

Oracle 数据库

OceanBase 数据库 Oracle 租户

TIMESTAMP_UNCONSTRAINED

-

TIMESTAMP_TZ_UNCONSTRAINED

-

TIMESTAMP_LTZ_UNCONSTRAINED

-

YMINTERVAL_UNCONSTRAINED

-

DSINTERVAL_UNCONSTRAINED

-

YEAR

-

MONTH

-

DAY

-

HOUR

-

MINUTE

-

SECOND

-

TIMEZONE_HOUR

-

TIMEZONE_MINUTE

-

TIMEZONE_REGION

-

TIMEZONE_ABBR

-