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

将字符串转换为十进制Oracle数据库,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我打算在Oracle数据库中将数据类型字符串转换为十进制,但出现以下错误: ORA-01722:número no válido 01722。00000-“无效号码”*原因: 指定的数字无效*操作:指定一个有效的数字 代码: TO_NUMBER('5.0') AS numero CAST('5.0' AS NUMBER) AS numero 你发布的代码对我来说很好 但是,请检查NLS/locale设置。如果我将我的更改为使用“.”作为十进制分隔符,则会得到相同的错误 因此,这似乎取决于您的

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

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

代码:

TO_NUMBER('5.0') AS numero

CAST('5.0' AS NUMBER) AS numero

你发布的代码对我来说很好

但是,请检查NLS/locale设置。如果我将我的更改为使用“.”作为十进制分隔符,则会得到相同的错误


因此,这似乎取决于您的语言环境设置。您可以使用
select*from v$nls\u parameters
进行检查,查看
nls\u数字字符的设置。

感谢您的回答,它可以作为找到问题根源的指南。正在验证nls\u数字\u字符Encentre',.'的本地配置
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
显然,服务器配置不同,因此导致了查询中的错误

要给出解决方案,请将“.”替换为“,”,我假设服务器上nls_数字_字符的配置为“,”

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

虽然此代码可以回答此问题,但提供有关如何以及为什么解决此问题的其他上下文将提高答案的长期价值。此链接包含与我的解决方案相关的更多信息可能重复