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

时间:2018-02-03 04:39:39

标签: oracle oracle-sqldeveloper

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

  

ORA-01722:númeronoválido01722。00000 - “无效号码”*原因:   指定的号码无效。 *操作:指定有效数字

代码:

TO_NUMBER('5.0') AS numero

CAST('5.0' AS NUMBER) AS numero

3 个答案:

答案 0 :(得分:0)

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

但是,请检查NLS /区域设置。如果我改变我的使用其他东西'。'作为小数分隔符然后我得到相同的错误。

因此看起来它可能属于您的语言环境设置。您可以与select * from v$nls_parameters核对,了解nls_numeric_characters设置的内容。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

要提供解决方案,请替换“。” by','我假设服务器上的nls_numeric_characters的配置是','。

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