我需要用点替换逗号,然后我需要我的值是一个数字。
所以我写了这个:
select replace('12345,6789', ',' , '.') from dual --it works fine
但后来我想转换
to_number
该值,我收到错误:
"invalid number"
最佳答案
to_number()
function使用 session 的 NLS_NUMERIC_CHARACTERS设置决定如何解释逗号和句点。如果你知道你的字符串总是有一个逗号作为小数点分隔符,你可以使用可选的第三个参数覆盖它作为调用的一部分;虽然这确实意味着您必须指定格式模型:
select to_number('12345,6789', '9999999999D9999', 'NLS_NUMERIC_CHARACTERS='',.''')
from dual;
TO_NUMBER('12345,6789','9999999999D9999
---------------------------------------
12345.6789
您不需要单独的
replace()
步。您还可以使用
ALTER SESSION SET NLS_NUMERIC_CHARACTERS=',.';
更改 session 的设置,但您可能无法控制必须运行您的代码的每个客户端中的设置。
关于sql - 小数点分隔符 oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38739525/