数据类型
序号 |
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的timestampwithloacltimezone,缺少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 ) ] |
支持 |
- |
- ORA兼容模式下,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锁。 |