在 Oracle SQL 中,where 子句中的 (+) 运算符的目的是什么,而不是外连接?

What is the purpose of (+) operator in a where clause, other than outer joins, in Oracle SQL?

我有一些非常古老的 Oracle SQL 代码需要查看,如下所示,我试图了解 (+) 运算符在 where 子句之后的操作第一次使用

select *
     from table_a a,
          table b b
    where 
         a.id = b.id (+)
         and b.seq_nb (+) = 1
         and b.type_cd (+) = 'DOLLR'

我认为 (+) 是一个外部连接等价物,所以

 from table_a a,
              table b b
        where 
             a.id = b.id (+)

相同
from table a a left outer join table b b on a.id=b.id

那么你怎么能像下面这样对硬编码变量进行外部连接呢?

     b.seq_nb (+) = 1
     and b.type_cd (+) = 'DOLLR'

任何帮助将不胜感激,谢谢!

等于:

select *
from table_a a
   left outer join table_b b 
     on a.id = b.id 
    and b.type_cd = 'DOLLR'
    and b.seq_nb = 1

有时也称为“过滤外连接”。

它等同于一个派生的外连接table:

select *
from table_a a
   left outer join (
     select * 
     from table_b
     where b.type_cd = 'DOLLR'
       and b.seq_nb = 1
   ) b on a.id = b.id