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 forTIMESTAMP 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 |