我有一个连接两个表的查询。一个表具有varchar类型的列,另一个表具有数字类型。我在3个oracle数据库上执行了我的查询,并且看到我希望可以解释的一些奇怪结果。在两个数据库中,像下面这样的作品。Oracle编号和varchar加入
select a.col1, b.somecol
from tableA a inner join tableB b on b.col2=a.col1;
在此查询中,tableA.col1的类型为number,tableB.col2的类型为varchar。这在两个数据库中工作正常,但不在第三个。在第三个我得到(ORA-01722)错误。第三,我需要做的是这样......
select a.col1, b.somecol
from tableA a inner join tableB b on b.col2=to_char(a.col1);
这适用于所有数据库。我有这个问题是为什么?以上是一个简化的查询,真正的查询稍微复杂一点,可以检索大量数据,因此第一个版本要快得多。如果我能在所有环境中工作,那将会很棒。
有谁知道为什么这可能在某些oracle数据库中工作,而没有其他人没有在数据类型上强制转换?是否有能够实现此类行为的全局设置?
整理将是我的第一个猜测。 Oracle通常允许隐式转换,所以它可能是一列不通过隐式转换... – 2010-02-24 23:28:09
您编写了所有这些单词,但您仍然无法准确解释* how *第一个查询在第三数据库。 – APC 2010-02-24 23:42:57
对不起,我在第一个查询中得到一个ORA-01722错误,第三个数据库 – broschb 2010-02-25 00:56:48