Я переписываю кучу старых, плохо написанных запросов 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
но что это «старый» синтаксис для левого внешнего соединения или правое внешнее соединение?
Стоит отметив, что внешние внешние соединения ANSI ('* =' и '= *') устарели со времен SQL Server 2005, если вы хотите использовать их в SQL Server 2008, вам необходимо установить уровень совместимости вашей базы данных до 80. Это может привести к сбою многих других процессов, вам, вероятно, придется просто укусить пулю и переписать с помощью синтаксиса соединения ANSI92 сразу. – GarethD
Я знаю - в вопросе: '(и да, у меня есть режим совместимости, временно установленный для поддержки старых объединений) .' :) – Kai