迁移 Oracle 到 PostgreSQL: 目录

七月 29, 2023

PostgreSQL 对 SQL 标准高度兼容,它实现的功能完全遵守于 ANSI SQL: 2008 标准。如果您正在将 Oracle 转换到 PostgreSQL,或者在开发一款通用的应用软件产品,需要同时适配 Oracle 和 PostgreSQL 的 SQL 标准,可以参考如下 SQL 转换的案例。

目录

SQL 语法

Oracle 和 PostgreSQL 都遵循 ANSI SQL 标准,也都提供了各自特有的 SQL 语法。当您从 Oracle 转换到 PostgreSQL 时,可以参考如下 SQL 转换的方案。

Oracle PostgreSQL 说明
{ CONNECT BY [ NOCYCLE ] condition [ START WITH condition ] | START WITH condition CONNECT BY [ NOCYCLE ] condition } WITH RECURSIVE 参考:层次查询 CONNECT BY
使用加号 (+) 形式的外连接 OUTER JOIN 参考:使用加号 (+) 进行外连接
FROM DUAL 创建 DUAL 视图 参考:DUAL 表

内置函数

Oracle 和 PostgreSQL 都为内置的数据类型提供了大量的函数和操作符。当您从 Oracle 转换到 PostgreSQL 时,可以参考如下内置函数转换的方案。

Oracle PostgreSQL 说明
SYSDATE now(), clock_timestamp(), current_date, current_time, current_timestamp, localtime, localtimestamp 参考:PostgreSQL 文档中的当前日期/时间
seqname.nextval nextval(’seqname') 参考:PostgreSQL 文档中的序列操作函数
NVL(expr1, expr2) COALESCE(value [, …])
INSTR(string , substring [, position [, occurrence ] ]) strpos(string, substring) 参考:PostgreSQL 文档中的其他字符串函数
TRUNC(date [, fmt ]) date_trunc(field, source [, time_zone ])
DECODE(expr, search, result [, search, result ]… [, default ]) CASE表达式 参考:DECODE 函数