PostgreSQL 与 Oracle 数据库字段类型的详细对比

一、数值类型对比

数据类型 Oracle PostgreSQL 说明
整数 NUMBER(p,0) SMALLINT/INT/BIGINT Oracle 统一用 NUMBER,PG 区分精度范围
浮点数 BINARY_FLOAT REAL 单精度浮点
双精度浮点 BINARY_DOUBLE DOUBLE PRECISION 双精度浮点
高精度小数 NUMBER(p,s) NUMERIC(p,s) 精确数值存储
自增序列 SEQUENCE + TRIGGER SERIAL/BIGSERIAL PG 内置自增类型

二、字符串类型对比

数据类型 Oracle PostgreSQL 说明
定长字符串 CHAR(n) CHAR(n) 固定长度
变长字符串 VARCHAR2(n) VARCHAR(n) Oracle 允许省略 FROM,PG 必须写 FROM
大文本 CLOB TEXT 无长度限制
二进制数据 BLOB/RAW BYTEA 二进制存储

三、日期时间类型对比

数据类型 Oracle PostgreSQL 关键差异
日期+时间 DATE TIMESTAMP(0) Oracle 的 DATE 包含时间(到秒),PG 的 DATE 仅日期
高精度时间戳 TIMESTAMP TIMESTAMP 均支持纳秒级精度
带时区时间戳 TIMESTAMP WITH TIME ZONE TIMESTAMPTZ 时区处理逻辑相同
本地时区时间戳 TIMESTAMP WITH LOCAL TIME ZONE 无直接等价,需转换 Oracle 特有类型
时间间隔 INTERVAL DAY TO SECOND INTERVAL 功能类似

四、其他类型

类型 Oracle PostgreSQL 说明
布尔值 无原生类型 BOOLEAN PG 支持原生布尔
行标识符 ROWID OID 物理行地址标识
JSON JSON (12c+) JSON/JSONB PG 的 JSONB 支持二进制存储和索引

五、使用注意事项

  1. 类型转换

    • Oracle 的 NUMBER(10) 建议转为 PG 的 INT,而非 NUMERIC
    • Oracle 的 VARCHAR2 迁移时直接映射为 PG 的 VARCHAR
  2. 语法差异

    • PG 的子查询必须有别名,Oracle 可不写。
    • 分页查询:Oracle 用 ROWNUM,PG 用 LIMIT/OFFSET
  3. 时区处理

    • 带时区类型存储时,两者均转换为 UTC,但检索时 PG 按会话时区转换,Oracle 按数据库时区转换。
相关推荐
@菜菜_达2 小时前
Nginx的安装与配置(window系统)
运维·nginx
熙xi.2 小时前
DHT11温湿度传感器Linux驱动开发完整流程
linux·运维·驱动开发
Yyyy4823 小时前
Ubuntu部署 Kubernetes1.23
linux·运维·ubuntu
人工智能训练3 小时前
在 Ubuntu 系统中利用 conda 创建虚拟环境安装 sglang 大模型引擎的完整步骤、版本查看方法、启动指令及验证方式
linux·运维·服务器·人工智能·ubuntu·conda·sglang
王道长服务器 | 亚马逊云4 小时前
AWS Auto Scaling:自动扩容,让服务器像呼吸一样灵活
运维·网络·自动化·云计算·aws
小蜗牛爱远行4 小时前
服务器和docker容器时间不一致相关问题
运维·服务器·docker
孙同学要努力4 小时前
《Linux篇》进程控制——进程创建(写时拷贝)、进程终止(退出码,exit,_exit)
linux·运维·服务器
Hali_Botebie4 小时前
服务器上用Slurm 管理训练bash 脚本任务
运维·服务器·bash
咕噜企业签名分发-淼淼4 小时前
app分发平台哪个好点?手机app应用内测分发平台支持负载均衡的重要性
运维·智能手机·负载均衡
一个儒雅随和的男子5 小时前
Nginx‌如何配置负载均衡,并使用对不同同负载均衡算法进行配置
运维·nginx·负载均衡