sql - 小数点分隔符 oracle

标签 sql oracle decimal

我需要用点替换逗号,然后我需要我的值是一个数字。
所以我写了这个:

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/

相关文章:

单表MySQL协方差计算

mysql - 将 NOT IN() mysql 与缺少唯一行或主键的表一起使用

sql - 当查询已经在双引号内时,如何在 oracle 中用空格处理列名?

r - 为坐标选择正确的正则表达式

Python 3 - 将字符串转换为数字

c# - 标准化 System.Decimal - 去除尾随零

php - 获取每小时插入数据库的行数

c# - 在表名称为文本框文本的位置插入查询

mysql - 从 Rails 4.1 的 `:distinct` 中删除弃用的 `Relation#count` 选项

sql - 有没有办法否定 SQL 中的 WHERE 子句?