数据类型
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
NUMBER [ ( p [ , s ] ) ] |
支持,有差异 |
精度和用法存在差异。
|
2 |
FLOAT [ ( p ) ] |
支持 |
- |
3 |
BINARY_FLOAT |
不支持 |
- |
4 |
BINARY_DOUBLE |
支持 |
- |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
DATE |
支持,有差异 |
精度有差异,GaussDB支持的公元时间较Oracle范围更大。 |
2 |
TIMESTAMP [ ( fractional_seconds_precision ) ] |
支持,有差异 |
- |
3 |
TIMESTAMP [ ( fractional_seconds_precision ) ] WITH TIME ZONE |
支持,有差异 |
GaussDB的timestamptz等价于Oracle的timestampwithlocaltimezone,缺少Oracle对应的timestamptz类型。 时区更新:部分国家或地区经常会更新时区信息, 数据库系统因此需要同步修改时区文件以确保时间内容的正确性。 GaussDB时区类型目前只涉及timestamp with timezone,当新的时区文件生效时,不会对已有的数据进行变更,新数据会随时区文件信息进行同步调整。与Oracle的同类型数据能力存在差异。 |
4 |
TIMESTAMP [ ( fractional_seconds_precision ) ] WITH LOCAL TIME ZONE |
不支持 |
- |
5 |
INTERVAL YEAR [ ( year_precision ) ] TO MONTH |
支持 |
- |
6 |
INTERVAL DAY [ ( day_precision ) ] TO SECOND [ ( fractional_seconds_precision ) ] |
支持 |
- |
- A兼容模式下,DATE类型被替换为TIMESTAMP(0) WITHOUT TIME ZONE,差异同TIMESTAMP(0) WITHOUT TIME ZONE。
- 对于TIMESTAMP [ ( fractional_seconds_precision ) ] / TIMESTAMP [ ( fractional_seconds_precision ) ] WITH TIME ZONE与Oracle存在以下差异。
- fractional_seconds_precision GaussDB支持的精度范围为0~6,Oracle支持的精度范围为0~9。
- GaussDB通过DateStyle设置日期和时间值的显示格式,以及有歧义的输入值的解析规则。具体请参见《开发指南》中“SQL参考 > 数据类型 > 日期/时间类型”章节中日期输入的说明介绍。Oracle在一般情况下的输入格式校验及输出显示由NLS_TIMESTAMP_FORMAT/NLS_TIMESTAMP_TZ_FORMAT参数进行控制。
- 对于秒的小数部分的显示,GaussDB默认去除末尾的零,Oracle依据格式化参数中的设置(FF/FF1-FF9)进行显示控制。如 '2017-09-01 10:32:19.212000',GaussDB显示为 '2017-09-01 10:32:19.212',Oracle在format参数中含FF时显示为'2017-09-01 10:32:19.212000',在format参数中含FF9时显示为'2017-09-01 10:32:19.212000000'。
- 支持的时间范围存在差异,GaussDB支持的公元时间较Oracle范围更大。
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
VARCHAR2 ( size [ BYTE | CHAR ] ) |
支持,有差异 |
在GaussDB中,size单位为字节,即仅支持BYTE,不支持在BYTE和CHAR之间选择,最大10MB;而在Oracle中,size的单位可以在BYTE和CHAR之间选择,MAX_STRING_SIZE=EXTENDED时,最大长度为32767字节,MAX_STRING_SIZE=STANDARD时,最大长度为4000字节,实际能容纳的字符数与使用的字符集有关。 |
2 |
NVARCHAR2 ( size ) |
支持,有差异 |
在GaussDB中,NVARCHAR2(n)类型是VARCHAR2(n)类型的别名;而在Oracle中NVARCHAR2(n)与VARCHAR2(n)有一定的区别,MAX_STRING_SIZE=EXTENDED时,最大长度为32767字节,MAX_STRING_SIZE=STANDARD时,最大长度为4000字节,实际能容纳的字符数与使用的字符集有关。 |
3 |
CHAR [ ( size [ BYTE | CHAR ] ) ] |
支持,有差异 |
在GaussDB中,size单位为字节,即仅支持BYTE,不支持在BYTE和CHAR之间选择,最大10MB;而在Oracle中,size的单位可以在BYTE和CHAR之间选择,最大容量为2000个字节,实际能容纳的字符数与使用的字符集有关。 |
4 |
NCHAR [ ( size ) ] |
支持,有差异 |
在GaussDB中,size单位为字节,最大10MB;而在Oracle中,size单位为字符,最大容量为2000个字节,实际能容纳的字符数与使用的字符集有关。 |
5 |
CLOB |
支持,有差异 |
不支持定位器。 |
6 |
NCLOB |
不支持 |
- |
7 |
LONG |
不支持 |
- |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
RAW ( size ) |
支持,有差异 |
在GaussDB中,size是指字节长度建议值,不会用于校验输入raw类型的字节长度。 |
2 |
LONG RAW |
不支持 |
- |
3 |
BLOB |
支持 |
- |
4 |
BFILE |
不支持 |
- |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
ROWID |
不支持 |
2 |
UROWID |
不支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
对象类型 |
不支持 |
2 |
REF数据类型 |
不支持 |
3 |
可变数组 |
支持 |
4 |
嵌套表 |
支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
anytype |
不支持 |
2 |
anydata |
不支持 |
3 |
anydataset |
不支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
XMLTYPE |
支持,有差异 |
在GaussDB中,不支持部分操作,如不能通过使用XMLELEMENT函数将字符串转变为XMLTYPE类型,而是转变成XML类型。具体请参见《开发指南》中“SQL参考 > 数据类型 > XMLTYPE类型”章节。 |
2 |
URIType |
不支持 |
- |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
SDO_GEOMETRY |
不支持 |
2 |
SDO_TOPO_GEOMETRY |
不支持 |
3 |
SDO_GEORASTER |
不支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
none |
- |
2 |
null |
AccessShare |
3 |
RS |
RowShare |
4 |
RX |
RowExclusive |
5 |
S |
ShareUpdateExclusive |
6 |
SRX |
Share |
7 |
- |
ShareRowExclusive |
8 |
X |
Exclusive |
9 |
- |
AccessExclusive |
10 |
- |
INVALID
说明:
GaussDB的INVALID表示被赋予了非法锁。仅在运行过程中出现了GaussDB无法识别的锁时会被赋予INVALID锁。 |