[英]Trying to migrate from Oracle to PostgreSQL
SELECT b.SERVICENAME,
a.PARAMETERNAME,
a.PARAMETERVALUE
FROM serviceParameter a,
subscriberService b,
serviceName c
WHERE a.SUBSCRIBERKEY (+) = 15677889
AND b.SUBSCRIBERKEY = 15677889
AND b.SERVICENAME = a.SERVICENAME(+)
AND c.SERVICENAME = b.SERVICENAME
AND c.MULTIINSTANCE = '0'
ORDER BY a.SERVICENAME;
如何将上述代码迁移到 PostgresSQL?
您必须按照以下方式翻译它:
SELECT ...
FROM a, b
WHERE a.x = b.y(+)
AND a.p = 42
AND b.q(+) = 'foo';
会变成:
SELECT ...
FROM a LEFT OUTER JOIN b
ON a.x = b.y
AND b.q = 'foo'
WHERE a.p = 42;
那是:
带有(+)
的一侧成为LEFT OUTER JOIN
的右侧(或等效地, RIGHT OUTER JOIN
的左侧)。
所有包含(+)
的WHERE
条件都会失去该装饰并进入连接条件。
很容易将 Oracle 的连接语法转换为符合标准的语法,因为后者功能更强大(并且更易于阅读以启动)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.