XLD*_*D_a 2 sql oracle decimal
我需要用点替换逗号然后我需要我的值是一个数字.所以我写了这个:
select replace('12345,6789', ',' , '.') from dual --it works fine
Run Code Online (Sandbox Code Playgroud)
但后来我想转换to_number该值,我得到错误:
"invalid number"
该to_number()函数使用会话的NLS_NUMERIC_CHARACTERS设置来决定如何解释逗号和句点.如果您知道您的字符串将始终使用逗号作为小数分隔符,则可以使用可选的第三个参数覆盖该字符串作为调用的一部分; 虽然这确实意味着您必须指定格式模型:
select to_number('12345,6789', '9999999999D9999', 'NLS_NUMERIC_CHARACTERS='',.''')
from dual;
TO_NUMBER('12345,6789','9999999999D9999
---------------------------------------
12345.6789
Run Code Online (Sandbox Code Playgroud)
您不需要单独的replace()步骤.
您也可以使用更改会话的设置ALTER SESSION SET NLS_NUMERIC_CHARACTERS=',.';,但您可能无法控制必须运行代码的每个客户端中的设置.
| 归档时间: |
|
| 查看次数: |
15414 次 |
| 最近记录: |