Oracle 和 PostgreSQL 常用数据类型的对比
在进行数据库迁移或在一个环境中使用多个数据库时,了解不同数据库系统支持的数据类型之间的对比是非常重要的。以下是 Oracle 和 PostgreSQL 常用数据类型的对比
数字数据类型
数据类型 |
Oracle |
PostgreSQL |
小整数 |
NUMBER(3,0) |
SMALLINT |
整数 |
NUMBER |
INTEGER , INT |
大整数 |
NUMBER |
BIGINT |
小数 |
NUMBER(p,s) |
NUMERIC(p,s) , DECIMAL(p,s) |
浮点数 |
BINARY_FLOAT , BINARY_DOUBLE |
REAL , DOUBLE PRECISION |
自增列 |
序列(Sequences) + 触发器 |
SERIAL , BIGSERIAL |
字符和文本数据类型
数据类型 |
Oracle |
PostgreSQL |
定长字符 |
CHAR(n) |
CHAR(n) , CHARACTER(n) |
变长字符 |
VARCHAR2(n) |
VARCHAR(n) , CHARACTER VARYING(n) |
长文本 |
CLOB |
TEXT |
日期和时间数据类型
数据类型 |
Oracle |
PostgreSQL |
日期 |
DATE |
DATE |
时间 |
TIMESTAMP |
TIMESTAMP [ WITHOUT TIME ZONE ] , TIMESTAMP [ WITH TIME ZONE ] |
时间戳 |
TIMESTAMP WITH TIME ZONE |
TIMESTAMPTZ (alias for TIMESTAMP WITH TIME ZONE ) |
时间间隔 |
INTERVAL |
INTERVAL |
布尔数据类型
数据类型 |
Oracle |
PostgreSQL |
布尔值 |
NUMBER(1) 或 CHAR(1) (一般使用 0 或 1 ) |
BOOLEAN |
大数据类型
数据类型 |
Oracle |
PostgreSQL |
可变长的二进制数据 |
BLOB |
BYTEA |
UUID 数据类型
数据类型 |
Oracle |
PostgreSQL |
UUID |
RAW(16) |
UUID |
JSON 数据类型
数据类型 |
Oracle |
PostgreSQL |
JSON |
CLOB 或 BLOB (使用 JSON 类型的函数和方法进行处理) |
JSON , JSONB |
特殊数据类型
数据类型 |
Oracle |
PostgreSQL |
IP 地址 |
- |
INET , CIDR |
MAC 地址 |
- |
MACADDR |
GIS 数据 |
Oracle Spatial |
PostGIS(扩展) |
全文检索 |
Oracle Text |
TSVECTOR , TSQUERY |