Tengo una consulta que une dos tablas. Una tabla tiene una columna que es de tipo varchar, y la otra tabla tiene un tipo de número. He ejecutado mi consulta en 3 bases de datos de Oracle, y estoy viendo algunos resultados extraños que espero se puedan explicar. En dos de las bases de datos algo así como los siguientes trabajos.número de Oracle y varchar join
select a.col1, b.somecol
from tableA a inner join tableB b on b.col2=a.col1;
En este tableA.col1 consulta 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 el tercero. En el tercero obtengo el error (ORA-01722). En el tercero tengo que 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 una gran cantidad de datos, por lo tanto, la primera versión es mucho más rápida. Si pudiera hacer que funcione en todos los entornos, sería genial.
¿Alguien sabe por qué esto puede funcionar en algunas bases de datos de Oracle y no en otras sin el molde en el tipo de datos? ¿Existe una configuración global que permita dicho comportamiento?
colación sería mi primera conjetura. Oracle generalmente permite la conversión implícita, por lo que podría ser que una columna no pase la conversión implícita ... –
Escribiste todas esas palabras y aún no lograste explicar con precisión * cómo * la primera consulta no funciona en el tercera base de datos. – APC
Lo siento, recibo un error ORA-01722 en la primera consulta, tercera base de datos – broschb