Oracle11g 甲骨文:什么是;(+;)=";?

Oracle11g 甲骨文:什么是;(+;)=";?,oracle11g,Oracle11g,我目前没有访问任何Oracle书籍的权限,我的在线搜索结果几乎没有返回任何结果(Google中的(+)没有显示任何内容)。我正在浏览现有代码,以便向查询添加一些字段,并看到: AND lookup.LookupID (+) = AuditID 然而,我不知道这是怎么回事。任何帮助都将不胜感激 注意:我在Google Chrome上发布这篇文章时没有看到社区wiki复选框,所以如果有人能帮我改一下,我将不胜感激。谢谢。这是Oracle指定外部联接的方式(ANSI方式是右联接/左联接)您看到的是指

我目前没有访问任何Oracle书籍的权限,我的在线搜索结果几乎没有返回任何结果(Google中的(+)没有显示任何内容)。我正在浏览现有代码,以便向查询添加一些字段,并看到:

AND lookup.LookupID (+) = AuditID
然而,我不知道这是怎么回事。任何帮助都将不胜感激


注意:我在Google Chrome上发布这篇文章时没有看到社区wiki复选框,所以如果有人能帮我改一下,我将不胜感激。谢谢。

这是Oracle指定外部联接的方式(ANSI方式是右联接/左联接)

您看到的是指定外部联接的“旧”方式。Oracle需要一种语法来表示外部联接,在ANSI委员会确定标准语法之前,Oracle提出了自己的语法

(+)
应该只在旧式代码中出现,现在建议避免使用这种语法并坚持使用标准

在这里你可以阅读一些历史信息。不太详细,但它会让你了解这个操作员是如何产生的

相关部分:

在query2中,我们看到了“旧式” 外部连接的Oracle语法。它是 括号中的加号。这 语法实际上并不是人类发明的 甲骨文,而是一个聪明的家伙 我一时想不起这个名字。神谕 看到了它的价值,是早期的采用者 外部连接,但需要这样做 让他们使用ANSI SQL之前的语法 委员会决定了一个。新的和 改进的ANSI SQL很好, 有人说更好,但作为一个老人 鸟我倾向于坚持与老和老 证明方法,直到有东西让我 改变


显然,甚至甲骨文也没有发明这种语法。有标准是很好的…

是的,oracle的方式是在where子句中而不是在tables规范中使用。如果您不喜欢使用(+),您仍然可以使用ANSI样式的内部/左/右连接:)