(+)号在Oracle SQL WHERE子句中的含义是什么?

可能重复:
Oracle: (+)在WHERE子句中做什么?

在Oracle数据库环境下考虑下面简化的SQL查询(虽然我不确定它是否是Oracle特有的):

 SELECT t0.foo, t1.bar FROM FIRST_TABLE t0, SECOND_TABLE t1 WHERE t0.ID (+) = t1.ID; 

WHERE子句中的(+)符号是什么? 对不起,如果这是一个无知的新手问题,但在Google或StackOverflow上search非常困难,因为即使使用引号,search引擎也会看到一个“+”符号,并且似乎想将其视为某种逻辑指令。

这是一个针对外连接的特定于Oracle的表示法。 这意味着它将包含来自t1的所有行,并且如果在t0中没有对应的行,则在t0列中使用NULLS。

在标准的SQL中,可以这样写:

 SELECT t0.foo, t1.bar FROM FIRST_TABLE t0 RIGHT OUTER JOIN SECOND_TABLE t1; 

如果您的版本支持ANSI连接, Oracle build议不要再使用这些连接(LEFT / RIGHT JOIN) :

Oraclebuild议您使用FROM子句OUTER JOIN语法而不是Oracle连接运算符。 使用Oracle连接运算符(+)的外部连接查询受以下规则和限制