Oracle:什么是"(+)="?

Xst*_*ity 5 oracle11g

我目前无法访问任何Oracle书籍,而且我的在线搜索确实没有结果(Google中的(+)没有显示任何内容).我正在查看现有代码,为查询添加一些字段,并看到:

AND lookup.LookupID (+) = AuditID
Run Code Online (Sandbox Code Playgroud)

但是,我不知道这是做什么的.任何帮助,将不胜感激.

注意:我在谷歌浏览器中发布这个时没有看到社区维基复选框,所以如果有人可以为我改变它,我会很感激.谢谢.

dar*_*ioo 7

您所看到的是指定外连接的"旧"方式.Oracle需要一种语法来表示外连接,在ANSI委托人确定标准语法之前,Oracle提出了自己的方法.

(+) 应该只在遗留代码中看到,现在建议简单地避免使用这种语法并坚持使用标准.

在此Oracle FAQ中,您可以阅读一些历史信息.不太详细,但它会让你知道这个运算符是如何形成的.

相关部分:

在query2中,我们看到OUTER-JOIN的"旧样式"Oracle语法.它是括号中的加号.这种语法实际上并不是由Oracle发明的,而是一些聪明的家伙,他的名字目前逃过了我.Oracle看到了它的价值,并且是OUTER-JOIN的早期采用者,但这样做需要他们在ANSI SQL COMMITTEE确定之前使用语法.新的和改进的ANSI SQL很好,有些人说甚至更好,但作为一只老鸟,我倾向于坚持旧的和经证实的方法,直到某些东西让我改变.

显然甚至没有Oracle确实发明了这种语法.有标准是好的...


Cha*_*ndu 4

这是 Oracle 指定外连接的方式(ANSI 方式是 RIGHT JOIN/LEFT JOIN)

  • 是的,oracle 方式采用 where 子句而不是表规范 (2认同)
  • 如果您不喜欢使用 (+),您仍然可以使用 ANSI 风格的 INNER/LEFT/RIGHT JOIN :) (2认同)