【发布时间】:2020-01-12 12:52:54
【问题描述】:
从 Oracle 转换到 PostgreSQL,有很多 SQL 可以从 Oracle 的连接语法“(+)”转换为标准连接语法。有没有一种自动的方式——工具——来做到这一点?除此之外,在进行此类转换时是否有任何经验法则可供使用?
例如,转换这个:
SELECT
request.requestId
FROM
request,
incident,
changeRequest
WHERE
incident.requestId = request.requestId AND
changeRequest.requestId = request.requestId(+)
/
到这里
SELECT
request.requestId
FROM
request
INNER JOIN incident ON incident.requestId = request.requestId
LEFT OUTER JOIN changeRequest ON changeRequest.requestId = request.requestId;
【问题讨论】:
-
您似乎了解规则。我的建议是更新 Oracle 中的联接,对其进行测试,然后将代码移至 Postgres。
-
在 SO 之外寻求资源是题外话。 (祝你好运在 Oracle 文档、出版物、博客等中找到 (+) 语义的清晰完整描述,包括手动重新添加的 12c 功能,或任何其他地方的任何人的合理猜测。如果你成功,请告诉我。)
-
不过——这是一个常见问题。在考虑发布之前,请始终使用谷歌搜索您的错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有您的特定字符串/名称,并阅读许多答案。如果您发布问题,请使用一个短语作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 (例如Oracle (Old?) Joins - A tool/script for conversion?)
-
我用过的一点经验法则来计算旧的联接样式联接是/是:加号 (+) 位于您允许数据不足的一侧”我会发布并解释一对示例,但作为评论会很讨厌,显然您询问如何做您不完全理解的事情有时超出范围。
标签: oracle postgresql database-migration outer-join ansi-sql