Oracle(旧?)加入 - 用于转换的工具/脚本?

mai*_*rgs 7 sql database oracle plsql outer-join

我一直在移植oracle选择,我一直在运行很多查询,如下所示:

SELECT e.last_name,
       d.department_name
  FROM employees e,
      departments d
WHERE e.department_id(+) = d.department_id;
Run Code Online (Sandbox Code Playgroud)

...和:

SELECT last_name, 
       d.department_id
  FROM employees e, 
       departments d
 WHERE e.department_id = d.department_id(+);
Run Code Online (Sandbox Code Playgroud)

有没有转换(+)语法的所有变体的指南/教程?什么是语法甚至调用(所以我可以搜索谷歌)?

更好 ..有没有一个工具/脚本可以为我做这个转换(首选免费)?某种优化器?我有大约500个这样的查询到端口..

该标准何时逐步淘汰?任何信息表示赞赏.

OMG*_*ies 22

(+)是Oracle特定的ANSI-92 OUTER JOIN前语法,因为ANSI-89语法不提供OUTER JOIN支持语法.

无论是RIGHTLEFT由哪个表&列参考符号被附加到确定.如果在与FROM子句中第一个表关联的列旁边指定它- 它是一个RIGHT连接.否则,这是一个LEFT加入. 对于需要了解JOIN之间差异的人来说,这是一个很好的参考.

使用ANSI-92语法重写的第一个查询:

    SELECT e.lastname,
           d.department_name
      FROM EMPLOYEES e
RIGHT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
Run Code Online (Sandbox Code Playgroud)

使用ANSI-92语法重写的第二个查询:

   SELECT e.lastname,
          d.department_name
     FROM EMPLOYEES e
LEFT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
Run Code Online (Sandbox Code Playgroud)

  • 读取它们的简单规则是带有"(+)"符号的列是可选的. (14认同)
  • Oracle的ANSI-92支持始于9i. (2认同)