2009-11-26 46 views

回答

13

尝试:

TO_NUMBER('0,22', '9D99') 

不像文字逗号,该D只会匹配小数点分隔符。所以如果失败了,你的小数分隔符可能是.,而不是,

你可以使用这个命令来查看小数点分隔符和千个分隔符:

select value from nls_session_parameters 
where parameter = 'NLS_NUMERIC_CHARACTERS' 

如果返回.,,逗号是你的千个分隔符。

要更改分隔符为单个查询,你可以:

select TO_NUMBER('0,22','9D99','nls_numeric_characters=,.') from dual; 
1

快速猜测: 0.22 0.22对比(同为9.99与0.99)