7.1. 数据类型

本节主要介绍统一SQL支持原生Oracle数据库中的SQL数据类型的对比信息

序号

数据类型分类

Oracle 数据类型

统一SQL

OceanBase-Oracle 数据类型

1

数字

BINARY_FLOAT

支持

BINARY_FLOAT

2

数字

BINARY_DOUBLE

支持

BINARY_DOUBLE

3

大对象

BFILE

不支持

4

大对象

BLOB

支持

BLOB

5

字符

CHAR(n),CHARACTER(n)

支持

CHAR(n),CHARACTER(n)

6

大对象

CLOB

支持

CLOB

7

时间&日期

DATE

支持

DATE

8

数字

DECIMAL(p,s),DEC(p,s)

支持

DECIMAL(p,s),DEC(p,s)

9

数字

DOUBLE PRECISION

不支持

10

数字

FLOAT(p)

支持

11

数字

INTEGER,INT

支持

INTEGER,INT

12

时间&日期

INTERVAL YEAR(p) TO MONTH

支持

INTERVAL YEAR(p) TO MONTH

13

时间&日期

INTERVAL DAY(p) TO SECOND(s)

支持

INTERVAL DAY(p) TO SECOND(s)

14

其他类型

LONG

不支持

15

其他类型

LONG RAW

不支持

16

字符

NCHAR(n)

支持

NCHAR(n)

17

字符

NCHAR VARYING(n)

不支持

18

大对象

NCLOB

不支持

19

数字

NUMBER(p,s),NUMERIC(p,s)

支持

NUMBER(p,s),NUMERIC(p,s)

20

字符

NVARCHAR2(n)

支持

NVARCHAR2(n)

21

其他类型

RAW(n)

支持

RAW(n)

22

其他类型

REAL

支持

REAL

23

其他类型

ROWID

支持

ROWID

24

数字

SMALLINT

支持

SMALLINT

25

时间&日期

TIMESTAMP(p)

支持

TIMESTAMP(p)

26

时间&日期

TIMESTAMP(p) WITH TIME ZONE

支持

TIMESTAMP(p) WITH TIME ZONE

27

时间&日期

TIMESTAMP(p) WITH LOCAL TIME ZONE

支持

TIMESTAMP(p) WITH LOCAL TIME ZONE

28

其他类型

UROWID(n)

支持

UROWID(n)

29

字符

VARCHAR(n)

支持

VARCHAR(n)

30

字符

VARCHAR2(n)

支持

VARCHAR2(n)

31

XML类型

XMLType

不支持

7.1.1. CHAR(size [BYTE | CHAR])

参数说明

参数

说明

size

表示指定的固定长度。

BYTE

表示以字节为单位提供列的长度。

CHAR

表示以字符为单位提供列的长度。

示例

-- 转换前Oracle SQL:
CREATE TABLE unisql_char_byte_test (col char(10 BYTE));
CREATE TABLE unisql_char_char_test (col char(10 CHAR));

-- 转换后OceanBase-Oracle SQL:
CREATE TABLE unisql_char_byte_test (col char(10 BYTE))
CREATE TABLE unisql_char_char_test (col char(10 CHAR))

7.1.2. VARCHAR2(size [BYTE | CHAR])

参数说明

参数

说明

size

表示存储的字节数或字符数的长度大小。

BYTE

表示以字节为单位提供列的长度。 VARCHAR2 的默认类型为 BYTE。

CHAR

表示以字符为单位提供列的长度。

示例

-- 转换前Oracle SQL:
CREATE TABLE unisql_varchar2_byte_test (col varchar2(10 BYTE));
CREATE TABLE unisql_varchar2_char_test (col varchar2(10 CHAR));


-- 转换后OceanBase-Oracle SQL:
CREATE TABLE unisql_varchar2_byte_test (col varchar2(10 BYTE))
CREATE TABLE unisql_varchar2_char_test (col varchar2(10 CHAR))