2014-01-10 96 views
0

我無法理解以下查詢返回給定結果的原因。

查詢1:

SELECT TO_NUMBER('$1,000.95', '$999,999.999') 
FROM dual; 

返回1000.95

爲什麼不查詢返回$1000.95$1,000.95TO_NUMBER函數是否刪除所有格式(.除外)?

問題2:

SELECT TO_NUMBER('1,000.95', '$999,999.999') 
FROM dual; 

返回ORA-01722: invalid number

我想我明白這一個更好 - 格式掩碼不符合數字格式。有沒有辦法在號碼中返回$(除了使用CONCAT||)?

回答

3

函數TO_NUMBER返回一個數字,$字符是ASCII碼,永遠不會在數字字段中表示。要添加一個$字符,您需要將該數字表示爲一個字符串。

+0

謝謝 - 非常清楚。數字'.'和'-'中是否有唯一可能的字符,或者是否有其他字符? –

+1

那麼這也取決於你的操作系統或軟件是如何提供給你的,並且可以通過本地/貨幣/等設置來實現,它不會像DB – AnthonyBlake

-1
SELECT TO_NUMBER('$1,000.95', 'L999G999D999') FROM dual; 
+0

http://sqlfiddle.com/# !4/cd327/1 – Sai