2014-03-03 22 views
2

我是oracle新手,我的問題很簡單,可以將CLOB字段轉換爲NUMBER類型進行比較。將CLOB轉換爲NUMBER進行比較 - Oracle

我試過使用CAST和TO_NUMBER函數,但我沒有得到任何工作。

我嘗試:

WHERE TO_NUMBER(clob_field) = 100 -> Error ORA-01722: NOT a valid number 

WHERE CAST(clob_field as NUMBER) = 100 -> Error ORA-00932:Inconsistent datatypes 

如果這是不可能的,這將是做到這一點的最好辦法?

感謝您的時間和幫助。

+1

你的'clob_field'有一個非數字......至少在其中一行中! –

+1

如果你需要比較一個CLOB和一個數字,那麼你應該檢查你的數據庫模型,因爲有些東西是不對的。 –

+0

是一個來自開源軟件項目的數據庫,爲了做到從另​​一個數據庫遷移數據,有必要這麼做......我希望從零開始,但是給出了規範... – Tommy

回答

2

比較它爲varchar擺脫錯誤消息:

WHERE TRIM(clob_field) = '100' 

如果有不捨100可以跳過TRIM任何空白:第一

WHERE clob_field = '100' 
+0

小數點可能不正確..取決於數據! –

+0

@OracleUser如果這就是你的意思,它不會將「100.0」或「1E2」識別爲「100」。 –

+0

Yup ..也「+1.0」<>「1」 –

-1

演員到一個VARCHAR2然後到NUMBER

CAST(CAST(clob_field AS VARCHAR2(200)) AS NUMBER(10)) 
+0

當'clob_field'無法轉換爲數字時,這不會停止錯誤。 –

+0

是的,但有時您知道它們是數字,通過用正則表達式解析CLOB來檢索值。 –

+0

好吧,我明白了...... OP有非數字值。 –

相關問題