本节主要介绍 TDSQL PG 数据库的 Oracle 兼容模式与原生 Oracle 数据库中 SQL 数据类型的兼容对比信息。
我们把 Oracle 数据库的数据类型大体分为几类,以下简单说明与 TDSQL PG 中数据类型的差异:
字符类型,包括:
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
CHAR [(size [BYTE | CHAR])] | 支持 | 固定字符长度的字符类型,TDSQL PG 目前仅支持指定 size 为 CHAR(字符长度)。 |
NCHAR[(size)] | 支持 | 固定字符长度的字符类型,TDSQL PG 目前不区分 UNICODE 字符和非 UNICODE 字符。 |
VARCHAR2(size [BYTE | CHAR]) | 支持 | 可变字节长度的字符类型,TDSQL PG 目前仅支持指定 size 为 BYTE(字节长度)。 |
NVARCHAR2(size) | 支持 | 可变字符长度的字符类型,TDSQL PG 目前不区分 UNICODE 字符和非 UNICODE 字符。 |
LONG | 支持 | 可变长度的字符类型,oracle 已废弃,仅供兼容历史版本使用。 |
数字类型,包括:
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
NUMBER[(p[,s])] | 支持 | 精度为 p 并且数值范围为 s 的数字类型,底层为 TDSQL PG 中的 NUMERIC |
FLOAT[(p)] | 支持 | 精度为 p 的浮点型,底层为 TDSQL PG 中的 NUMERIC |
BINARY_FLOAT | 支持 | 浮点型,底层为 TDSQL PG 中的 NUMERIC |
BINARY_DOUBLE | 支持 | 浮点型,底层为 TDSQL PG 中的 NUMERIC |
时间类型,包括:
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
DATE | 支持 | 时间类型,显示格式取决于 NLS_DATE_FORMAT 格式 |
TIMESTAMP [(fractional_seconds_precision)] | 支持 | 时间戳类型,fractional_seconds_precision 表示其中秒的小数位数 |
TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE | 支持 | 带时区的时间戳类型,fractional_seconds_precision 同 TIMESTAMP |
TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE | 支持 | 带本地时区的时间戳,fractional_seconds_precision 同 TIMESTAMP |
INTERVAL YEAR [(year_precision)] TO MONTH | 支持 | 包含年、月的时间间隔类型,year_precision 是年的数字位数 |
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)] | 支持 | 包含天、小时、分钟、秒的时间间隔类型,day_precision 表示天的数字位数,fractional_seconds_precision 同 TIMESTAMP |
RAW 和 LONG RAW 类型
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
RAW(size) | 支持 | 可变字节长度的二进制数据类型 |
LONG RAW(size) | 支持 | 可变字节长度的二进制数据类型 |
大对象类型,包括:
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
BFILE | 支持 | 外部二进制文件类型 |
BLOB | 支持 | 二进制大对象 |
CLOB | 支持 | 字符大对象 |
NCLOB | 支持 | 同 CLOB,TDSQL PG 目前不区分 UNICODE 字符和非 UNICODE 字符。 |
ROWID 和 UROWID 类型
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
ROWID | 支持 | 行标识符,可以唯一标识表中的一行。 |
UROWID | 支持 | 同 ROWID |
XMLTYPE 类型
Oracle 数据类型 | TDSQL PG 数据库是否支持 | 说明 |
XMLTYPE | 支持 | 用于存储 XML 数据格式的类型 |
目前上述的 Oracle 数据类型,除了说明中标出的不同的地方,其他的地方 TDSQL PG 和 Oracle 完全相同的使用方法,更加详细的说明可以参考 Oracle 的官方文档。