将字符串转换为十进制 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章