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 |