oracle查询中的(+)运算符

时间:2013-10-04 12:10:24

标签: sql oracle

查询如下

select tbl1.x, tbl2.y
  from
tbl1, tbl2
  where tbl1.some_column (+) = tbl2.some_column
  AND tbl1.some_column2 (+) = 'Y'

让我感到困惑的是这部分

 AND tbl1.some_column2 (+) = 'Y'

这是什么意思?如果我删除(+),查询将返回完全不同的行数。当=的两侧都有列名时,我确实理解了(+)的应用,但是当<?> 在=?的一侧有一个字符串时,它是做什么的? / p>

1 个答案:

答案 0 :(得分:7)

这是Oracle在LEFT OUTER JOIN(或者,在这种情况下,可能是RIGHT OUTER JOIN)之前的遗留语法。

现代Oracle中不再需要使用它(至少从9i开始,甚至可能是8i)。

现在您可以使用标准的SQL连接语法:

SELECT tbl1.x, tbl2.y
FROM tbl1 RIGHT OUTER JOIN tbl2 
ON ( tbl1.some_column = tbl2.some_column AND tbl1.some_column2 = 'Y')