2009-02-01 7 views
2

simple q. dans Oracle 9.2, comment comparer le type LONG contenant du texte String à une colonne de VARCHAR2.dans Oracle 9.2, comment comparer LONG Type contenant du texte String à une colonne de VARCHAR2

select * from table1 t1, t2 table2 où t1.long_value = t2.varchar2_value

comment puis-je exécuter une telle requête de la façon la plus simple?

+0

Alors, quel est exactement le problème avec le SQL tel que vous l'avez écrit? –

+0

Cela ne fonctionnera pas. Essayez-le. Il jette une erreur "utilisation illégale de longue". – DCookie

Répondre

-1

hmm, sans avoir Oracle accessible, je devine que votre problème est avec le casting aux types corrects.

essayer (''||t1.long_value) = t2.varchar2_value pour forcer une conversion

mais cela dépend de la façon dont vous avez votre configuration d'index. Si vous voulez utiliser l'index sur t1.long_value, vous pouvez être mieux de convertir t2.varchar2_value en quelque chose

+1

Je ne sais pas pourquoi Oracle a implémenté un type de données inutile sans les intrinsèques pour y faire face. Votre essai génère l'erreur intuitive: ORA-00932: types de données incohérents: attendu NUMBER obtenu LONG: - | – DCookie

+1

Il s'agit d'un type de données existant. Mais je suis d'accord avec vous, pourquoi les tables système n'ont-elles pas été mises à jour pour refléter les types de données modernes. – Clarkey

2

La réponse courte est que vous ne pouvez pas, directement. Jetez un oeil à this pour une fonction pour convertir les longs en varchar2 afin que vous puissiez l'utiliser dans une instruction SQL. LONG est plus difficile que cela vaut la peine, mais parfois vous êtes coincé avec elle.

Questions connexes