Número de Oracle y unión varchar

Tengo una consulta que une dos tablas. Una tabla tiene una columna que es de tipo varchar, y la otra tabla tiene tipo de número. He ejecutado mi consulta en 3 bases de datos Oracle, y veo algunos resultados extraños que espero puedan explicarse. En dos de las bases de datos, algo como lo siguiente funciona.

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

En esta consulta, tableA.col1 es de tipo número y tableB.col2 es de tipo varchar. Esto funciona bien en dos de las bases de datos pero no en la tercera. En el tercero recibo el error (ORA-01722). En el tercero necesito hacer algo como ...

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

Esto funciona en todas las bases de datos. La pregunta que tengo es ¿por qué? Lo anterior es una consulta simplificada, y la consulta real es un poco más compleja y recupera muchos datos, por lo tanto, la primera versión es mucho más rápida. Si pudiera hacer que eso funcione en todos los entornos, sería genial.

¿Alguien sabe por qué esto puede funcionar en algunas bases de datos Oracle y no en otras sin el tipo de datos? ¿Existe una configuración global que permita tal comportamiento?

Respuestas a la pregunta(1)

Su respuesta a la pregunta