我正在重寫一堆舊的,寫得不好的Oracle查詢,並針對新的(-er)Sql Server 2008環境。他們使用古老的Oracle加入語法,如什麼是T-Sql連接的'舊式'語法?
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
但什麼是「老」語法左外連接或右外連接?
值得一注意到自SQL Server 2005以來不推薦使用非ANSI外連接運算符('* ='和'= *'),如果要在SQL Server 2008中使用它們,則需要設置數據庫的兼容級別到80.這可能會導致許多其他進程失敗,您可能需要咬緊牙關並立即用ANSI92連接語法重寫。 – GarethD
我知道 - 在問題中:'(是的,我的兼容模式暫時設置爲支持舊連接)。':) – Kai