我一直在移植 oracle selects,并且遇到了很多这样的查询:
SELECT e.last_name,
d.department_name
FROM employees e,
departments d
WHERE e.department_id(+) = d.department_id;
...和:
SELECT last_name,
d.department_id
FROM employees e,
departments d
WHERE e.department_id = d.department_id(+);
是否有转换所有 (+) 语法变体的指南/教程?这个语法叫什么(所以我可以搜索谷歌)?
更好.. 是否有工具/脚本可以为我进行这种转换(首选免费)?某种优化器?我有大约 500 个这样的查询要移植..
该标准何时被淘汰?任何信息表示赞赏。
最佳答案
(+)
是 Oracle 特定的 ANSI-92 之前的 OUTER JOIN 语法,因为 ANSI-89 语法不提供对OUTER JOIN
支持的语法。
它是RIGHT
还是LEFT
取决于符号附加到哪个表和列引用。如果它在与 FROM
子句中的第一个表关联的列旁边指定 - 它是一个 RIGHT
连接。否则,它是一个 LEFT
连接。 This a good reference for anyone needing to know the difference between JOINs .
使用 ANSI-92 语法重写的第一个查询:
SELECT e.lastname,
d.department_name
FROM EMPLOYEES e
RIGHT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
第二个查询使用 ANSI-92 语法重写:
SELECT e.lastname,
d.department_name
FROM EMPLOYEES e
LEFT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
关于sql - Oracle(旧?)加入 - 用于转换的工具/脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425960/