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 按数据库时区转换。
相关推荐
河南博为智能科技有限公司16 分钟前
单串口服务器-工业级串口联网解决方案
运维·服务器·物联网·边缘计算
爱喝水的鱼丶22 分钟前
SAP-MM:SAP采购组织全面学习指南:从概念到实战配置图解
运维·开发语言·数据库·学习·sap·mm模块·采购组织
Rum_0M24 分钟前
服务器内部信息获取
运维·服务器·web安全·网络安全·信息安全·职业技能大赛
口嗨农民工1 小时前
linux 时间相关的命令
linux·运维·服务器
三不原则1 小时前
企业级CI/CD全流程实战指南
运维·ci/cd
油条不卖1 小时前
搞坏了docker 双系统下重装ubuntu22.04
运维·docker·容器
往事随风去1 小时前
面试官:mysql从数据库断开一段时间后,部分binlog已丢失,如何重建主从?
运维·数据库·mysql
云飞云共享云桌面2 小时前
1台电脑10个画图设计用怎么实现
linux·运维·服务器·网络·数据库·自动化·电脑
三坛海会大神5552 小时前
LVS与Keepalived详解(一)负载均衡集群介绍
运维·负载均衡·lvs
宇钶宇夕2 小时前
西门子 S7-200 SMART PLC 编程:转换 / 定时器 / 计数器指令详解 + 实战案例(指令讲解篇)
运维·算法·自动化