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 按数据库时区转换。
相关推荐
sbjdhjd7 分钟前
Docker | 核心概念科普 + 保姆级部署
linux·运维·服务器·docker·云原生·面试·eureka
Agent产品评测局9 分钟前
企业生产报工自动化落地,数据采集全流程实现方案 —— 2026制造业数字化转型深度选型指南
运维·人工智能·ai·chatgpt·自动化
志栋智能11 分钟前
安全超自动化如何缩短平均检测与响应时间?
运维·安全·自动化
Project_Observer16 分钟前
为您的项目选择最合适的Zoho Projects自动化巧能
大数据·运维·人工智能·深度学习·机器学习·自动化·编辑器
西柚小萌新17 分钟前
【人工智能:Agent】--OpenClaw设计架构解析
运维·服务器·架构
帕里亚36 分钟前
ubuntu18.04 APT升级 glibc2.28 (Jetson)
linux·运维·windows
新新学长搞科研38 分钟前
【多所权威高校支持】第五届新能源系统与电力工程国际学术会议(NESP 2026)
运维·网络·人工智能·自动化·能源·信号处理·新能源
cyber_两只龙宝1 小时前
【Nginx】Nginx实现FastCGI详解
linux·运维·nginx·云原生·php·memcached·fastcgi
wang09071 小时前
linux的中断分析(硬中断和软中断)
linux·运维·服务器
阿沁QWQ1 小时前
Docker 核心技术和实现原理
运维·docker·容器