【问题标题】:Convert string to decimal Oracle database将字符串转换为十进制 Oracle 数据库
【发布时间】: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

【问题讨论】:

标签: oracle oracle-sqldeveloper


【解决方案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;
    

    【讨论】:

    猜你喜欢
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多