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

标签 sql database oracle plsql outer-join

我一直在移植 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/

相关文章:

java - ORA-00928: Oracle 中缺少 SELECT 关键字

php - SQL联合和分组依据

php - 需要帮助修复 PHP Ajax Jquery Sql 动态下拉列表

sql - 创建 SQL 'LIKE' 语句来查找特定的数字和字母模式

php - SQLSTATE[42000] : Syntax error or access violation: 1064 phpmyadmin

sql - 在有限的时间内授予表权限

php - 将多个数据库结果合并为一个

javascript - node.js 存储游戏状态,如何?

sql - Postgres 9.3 pg_stat_activity.query 长度不会改变

java - 如何在java adf中显示数据库返回错误消息