我有一個連接兩個表的查詢。一個表具有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