繁体   English   中英

尝试从 Oracle 迁移到 PostgreSQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM