Junção de número e varchar Oracle

Eu tenho uma consulta que une duas tabelas. Uma tabela possui uma coluna do tipo varchar e a outra tabela possui o tipo de número. Eu executei minha consulta em 3 bancos de dados Oracle e estou vendo alguns resultados estranhos, espero que possam ser explicados. Em dois dos bancos de dados, algo como o seguinte funciona.

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

Nesta consulta, tableA.col1 é do tipo número e tableB.col2 é do tipo varchar. Isso funciona bem em dois dos bancos de dados, mas não no terceiro. No terceiro, recebo o erro (ORA-01722). No terceiro, preciso fazer algo como ...

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

Isso funciona em todos os bancos de dados. A pergunta que tenho é por quê? A descrição acima é uma consulta simplificada e a consulta real é um pouco mais complexa e recupera muitos dados; portanto, a primeira versão é muito mais rápida. Se eu conseguisse que isso funcionasse em todos os ambientes, seria ótimo.

Alguém sabe por que isso pode funcionar em alguns bancos de dados Oracle e não em outros sem a conversão no tipo de dados? Existe uma configuração global que permita esse comportamento?

questionAnswers(1)

yourAnswerToTheQuestion