我遇到了一個奇怪的場景,其中to_number函數無法將一個數據庫中的字符串數據類型列中存儲的數字轉換爲另一個數據庫中的數據。to_number函數的Oracle數據類型轉換問題
所以,爲了排除所有可能的情況,如額外的空格,空值,垃圾等,我只選擇了一個單一的和在列上應用to_number函數,我完全不是將數字保存爲字符串的最佳實踐。
有趣的是,查詢在一個數據庫中執行得很好,但在其他數據庫中執行得很好。
下面的查詢在開發中運行良好,但在測試數據庫中運行良好。
select column_name
from table_name
where to_number(column_name) = 1618
此外,當我在測試中運行以下查詢時,我得到的結果與任何錯誤。
select to_number(column_name) from table_name
當我將to_number函數移動到where子句時,即我收到無效數字錯誤時。
有什麼想法?
謝謝...
那麼,你的表中有非數字值。您的「where」子句中的To_number將執行全表掃描。任何無效值都會引發錯誤。 – OldProgrammer
感謝您的快速回復,但是當我執行查詢'select_name(column_name)from table_name';它給結果。是不是在做全表掃描呢?我很困惑:( – user1751356
是的,那麼在表格中不能有無效值,因爲你沒有向我們展示任何輸入或輸出數據,所以不能做出任何決定,下面是一個簡單的[ SqlFiddle](http://sqlfiddle.com/#!4/7b37e/1)證明錯誤 – OldProgrammer