2012-10-25 38 views
1

我有一個表上的列有點問題。 該列是一個名爲「獎」的Varchar。 的的數據都是一樣的東西:ORACLE - 字符串到數字

00008599 
00004565 
00001600 
etc... 

他們必須成爲:

85.99 
45.65 
16.00 
etc... 

我試圖與TO_NUMBER功能,但它不工作。 喜歡的東西:

SELECT to_number(prize, '999999.99') FROM TABLE 

的錯誤是:ORA-01722

+0

你在列中的值是不是純數字?你可以用'not regexp_like(prize,'^ [0-9] + $')來檢查' –

+1

如果你可以(找到不符合的數據後),你應該更新你的數據模型,作爲數字存儲,甚至優選數量(n,2)爲n的某個合適的值。 –

回答

3

你可以使用LTRIM由100擺脫前導零和除法:

SELECT to_number(ltrim(prize, '0'))/100 FROM table 
+0

謝謝。我正在使用這個涉及字符串函數的指令,但是您的更好的是,將您的代碼作爲realPrize(SUBSTR(獎,0.5)||'。'|| SUBSTR(獎,6,2)) – MrMime

1

請注意,你自己有以處理字符串是100倍的事實。最簡單的方法應該是這樣的:

SELECT to_number(prize)/100 FROM TABLE