Номер Oracle и соединение varchar

У меня есть запрос, который объединяет две таблицы. Одна таблица имеет столбец типа varchar, а другая таблица имеет тип числа. Я выполнил свой запрос по 3 базам данных Oracle и вижу некоторые странные результаты, которые, я надеюсь, можно объяснить. На двух базах работает что-то вроде следующего.

select a.col1, b.somecol 
from tableA a inner join tableB b on b.col2=a.col1;

В этом запросе tableA.col1 имеет тип номера, а tableB.col2 имеет тип varchar. Это прекрасно работает в двух базах данных, но не в третьей. В третьем я получаю (ORA-01722) ошибку. В третьем мне нужно сделать что-то вроде ...

select a.col1, b.somecol 
from tableA a inner join tableB b on b.col2=to_char(a.col1);

Это работает во всех базах данных. У меня вопрос почему? Выше приведен упрощенный запрос, а реальный запрос немного сложнее и извлекает много данных, поэтому первая версия намного быстрее. Если бы я мог заставить это работать во всех средах, это было бы здорово.

Кто-нибудь знает, почему это может работать в некоторых базах данных оракула, а не в других без преобразования типа данных? Существует ли глобальная настройка, которая разрешает такое поведение?

Ответы на вопрос(1)

Ваш ответ на вопрос