将字符串转换为十进制 Oracle 数据库

Posted

技术标签:

【中文标题】将字符串转换为十进制 Oracle 数据库【英文标题】:Convert string to decimal Oracle database 【发布时间】:2018-02-03 04:39:39 【问题描述】:

我打算在 Oracle 数据库中将数据类型字符串转换为十进制,但出现此错误:

ORA-01722: número no válido 01722. 00000 - “无效号码” *原因: 指定的号码无效。 *操作:指定一个有效的数字

代码:

TO_NUMBER('5.0') AS numero

CAST('5.0' AS NUMBER) AS numero

【问题讨论】:

NLS_NUMERIC_CHARACTERS setting for decimal的可能重复 【参考方案1】:

您发布的代码对我来说很好用。

但是,请检查您的 NLS/语言环境设置。如果我改变我的使用其他的东西'。作为小数点分隔符,我得到同样的错误。

所以看起来这可能取决于您的语言环境设置。您可以通过select * from v$nls_parameters 查看nls_numeric_characters 的设置。

【讨论】:

【参考方案2】:
select TO_NUMBER('5.0') from dual;

select NLS_NUMERIC_CHARACTERS
 from v$nls_parameters;

 --There must be '.' in value filed to run above query

【讨论】:

虽然此代码可以回答问题,但提供有关 如何为什么 解决问题的附加上下文将提高​​答案的长期价值。 【参考方案3】:

感谢您的回答,它可以作为找到问题根源的指南。验证 nls_numeric_characters encontre ',.' 的本地配置 显然服务器配置不同,因此导致查询中的错误。

要给出解决方案,请替换 '.'通过','我假设服务器上nls_numeric_characters的配置是','。

select TO_NUMBER(REPLACE('5.0','.',',')) from dual;

【讨论】:

此链接***.com/questions/24571355/… 包含与我的解决方案相关的更多信息

以上是关于将字符串转换为十进制 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

java中如何将字符串转换为二进制数

在java中怎么将二进制字符串转换为文件流

oracle sql字符串转数字问题

oracle 将字符型转换为数值型

oracle怎么把数字转换为字符串

oracle怎么把数值型日期转换成日期字符型