我正在针对新的(-er)Sql Server 2008环境重写一堆旧的,写得不好的Oracle查询。他们使用旧式的Oracle连接语法,如
select <whatever>
from Table1, Table2, Table3
where Table1.T1ID = Table2.T2ID -- old Oracle inner join
and Table2.T3ID = Table3.T3ID (+) -- old Oracle left join (I think)
除了更复杂。有很多混合连接和很多嵌套,并且在这些事情中发生的观点上堆积了很多观点。它不漂亮。两个服务器之间的数据也是不同的,这使得测试成为一项苦差事。
我认为最简单的复制方法是让查询在Sql Server中看起来尽可能相似(即使用相同的连接方式),然后在我有信心之后做一次大规模的清理工作他们肯定都在做同样的事情。我没有在某个地方错误的地方加入(是的,我有兼容模式暂时设置为支持旧连接)。
我知道T-Sql中内连接的'旧'语法是
select <whatever>
from T1, T2
where T1.ID = T2.ID
但左外连接或右外连接的'旧'语法是什么?
答案 0 :(得分:2)
从TechNet上的文档(在SQL Server 2000上,所以请注意,这可能不再受支持!),您需要使用*=
而不是(+)
作为Oracle作用:
select <whatever>
from T1, T2
where T1.ID *= T2.ID