我打算在Oracle数据库中将数据类型字符串转换为十进制,我收到此错误:
ORA-01722:númeronoválido01722。00000 - “无效号码”*原因: 指定的号码无效。 *操作:指定有效数字
代码:
TO_NUMBER('5.0') AS numero
CAST('5.0' AS NUMBER) AS numero
答案 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;