2013-07-19 60 views
0

我想使用to_number函數將varchar列轉換爲數字,但我在理解Oracle嘗試執行SQL的順序時遇到了一些問題。Oracle - 將to_number函數應用於varchar列

聲明如下所示;

select * from table where column is not null and to_number(column, '999.9') > 20 

當Oracle執行此操作時,會引發無效的數字異常。我知道Oracle使用某種關係代數公式優化了SQL語句,但是有人能告訴我如何安全地使用to_number運算符來實現我的目標嗎?

+3

列中有一些非空值無法轉換爲數字 –

+0

爲什麼非空值是一個問題? – cduggan

+0

,因爲空值是由'不是空'(我認爲to_number也不會窒息他們,但只是通過null) – Thilo

回答

3

有人能告訴我如何安全地使用to_number操作符來實現我的目標嗎?

不幸的是,在申請to_number之前,您必須先設置first filter out the rows with non-numerical data。轉換函數本身是「不安全的」,如果您願意,它會使整個查詢崩潰在一個無效輸入上。