Oracle11g 甲骨文:什么是;(+;)=";?
我目前没有访问任何Oracle书籍的权限,我的在线搜索结果几乎没有返回任何结果(Google中的(+)没有显示任何内容)。我正在浏览现有代码,以便向查询添加一些字段,并看到:Oracle11g 甲骨文:什么是;(+;)=";?,oracle11g,Oracle11g,我目前没有访问任何Oracle书籍的权限,我的在线搜索结果几乎没有返回任何结果(Google中的(+)没有显示任何内容)。我正在浏览现有代码,以便向查询添加一些字段,并看到: AND lookup.LookupID (+) = AuditID 然而,我不知道这是怎么回事。任何帮助都将不胜感激 注意:我在Google Chrome上发布这篇文章时没有看到社区wiki复选框,所以如果有人能帮我改一下,我将不胜感激。谢谢。这是Oracle指定外部联接的方式(ANSI方式是右联接/左联接)您看到的是指
AND lookup.LookupID (+) = AuditID
然而,我不知道这是怎么回事。任何帮助都将不胜感激
注意:我在Google Chrome上发布这篇文章时没有看到社区wiki复选框,所以如果有人能帮我改一下,我将不胜感激。谢谢。这是Oracle指定外部联接的方式(ANSI方式是右联接/左联接)您看到的是指定外部联接的“旧”方式。Oracle需要一种语法来表示外部联接,在ANSI委员会确定标准语法之前,Oracle提出了自己的语法
(+)
应该只在旧式代码中出现,现在建议避免使用这种语法并坚持使用标准
在这里你可以阅读一些历史信息。不太详细,但它会让你了解这个操作员是如何产生的
相关部分:
在query2中,我们看到了“旧式”
外部连接的Oracle语法。它是
括号中的加号。这
语法实际上并不是人类发明的
甲骨文,而是一个聪明的家伙
我一时想不起这个名字。神谕
看到了它的价值,是早期的采用者
外部连接,但需要这样做
让他们使用ANSI SQL之前的语法
委员会决定了一个。新的和
改进的ANSI SQL很好,
有人说更好,但作为一个老人
鸟我倾向于坚持与老和老
证明方法,直到有东西让我
改变
显然,甚至甲骨文也没有发明这种语法。有标准是很好的…是的,oracle的方式是在where子句中而不是在tables规范中使用。如果您不喜欢使用(+),您仍然可以使用ANSI样式的内部/左/右连接:)