Я работаю с устаревшим SQL, который не очень хорошо написан. Есть неоднозначные отборы, которые, кажется, дают результаты, которые мы ожидаем по большей части, но не всегда.
Вот упрощенный пример того, о чем я говорю:
create table T1(
A VARCHAR2(10),
B VARCHAR2(10),
C VARCHAR2(10),
D VARCHAR2(10)
)
create table T2(
A VARCHAR2(10),
B VARCHAR2(10)
)
insert into T1(A, B, C, D)
values ('AA', 'BB', 'CC', 'DD' )
insert into T2(A, B)
values ('Y', 'N' )
Пока ничего необычного, кроме используемых запросов ...
SELECT * FROM T1, T2 WHERE T2.A ='Y'
A B C D A_1 B_1
AA BB CC DD Y N
SELECT * FROM T2, T1 WHERE T2.A ='Y'
A B A_1 B_1 C D
Y N AA BB CC DD
Это явно неоднозначно, и Oracle пытается помочь нам, уточняя столбцы с суффиксом _1, где это необходимо. Существуют ли обстоятельства, когда Oracle справится с этим по-другому? Например, разные версии и т. Д.
Например, в первом запросе значение поля A равно «AA», но могут ли быть обстоятельства, когда этот же запрос установит для поля A значение «Y»?
Существующая кодовая база имеет такие вещи повсюду, и ее нужно будет исправить, а сейчас я просто пытаюсь оценить, насколько это серьезная проблема? Я в основном обеспокоен тем, что один и тот же SQL, запущенный для разных версий Oracle, может дать разные результаты.
Спасибо!
РЕДАКТИРОВАТЬ: Для ясности план состоит в устранении неоднозначности запросов. На данный момент вопрос в том, как различные версии Oracle справятся с этим?