【问题标题】:ORA-01722: invalid number for Number datatype in oracleORA-01722: oracle 中 Number 数据类型的数字无效
【发布时间】:2015-08-20 10:09:00
【问题描述】:

我试图在KPI_DEFINITION 表中插入一个值,但我收到错误ORA-01722: invalid number。错误是针对KPI_FREQUENCY 数据类型的KPI_FREQUENCY 字段,它试图插入值'0,5'。我认为数字数据类型允许整数和浮点值。但它仍然给出错误。

Insert into RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION (KPI_DEF_ID,KPI_NAME,KPI_DESC,KPI_FREQUENCY) values ('10003881','Backlog Resul11t','Backlog Result11','0,5');

【问题讨论】:

    标签: oracle insert numbers


    【解决方案1】:

    在 SQL 中,数字使用单引号指定。

    另外:小数位使用点 . 而非逗号分隔。所以你需要把它写成:

    Insert into RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION 
      (KPI_DEF_ID,KPI_NAME,KPI_DESC,KPI_FREQUENCY) 
    values 
      ('10003881','Backlog Resul11t','Backlog Result11', 0.5);
                                                          ^
                                                          Here
    

    如果 KPI_DEF_ID 也是一个数字列,请同时删除该值的单引号:

    有关如何指定数字或字符串文字的完整文档,请参阅手册:

    https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#i139891

    【讨论】:

    • 其实我已经从 sql developer 生成了这个脚本。它以这种方式生成'0,5'。但是由于我们在 oracle 中有 FLOAT,DECIMAL 数据类型,为什么它在数字数据类型中有允许的十进制值
    • @Rahul:decimalnumber(x,y) 的别名。详见手册:docs.oracle.com/database/121/SQLRF/sql_elements001.htm#CHDHDHGB
    • @Rahul - 你需要看看你是如何生成脚本的。也许您正在获取现有值并使用 to_char(),并使用 NLS 设置为您提供逗号作为小数分隔符;然后用引号括起来?如果是这样,您需要丢失引号,并强制它使用 . 作为小数点分隔符 - 因此它的生成如本答案所示。
    • 你好 Alex,你是对的,我的 NLS 设置从十进制设置为“,”。但我想知道为什么 oracle 具有允许十进制的数字数据类型。在 sql developer 中,您还可以看到带有 FLOAT 和 Decimal 的数据类型。那么这个 Number,Decimal 和 Float 数据类型有什么区别呢?
    • @Rahul - 你看过文档了吗?他们解释了差异。
    【解决方案2】:

    在您的情况下,KPI_FREQUENCY 的可能数据类型是 number(2,1)
    修改您的insert 声明

    Insert into  RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION (KPI_DEF_ID,KPI_NAME,KPI_DESC,KPI_FREQUENCY) 
        values ('10003881','Backlog Resul11t','Backlog Result11',0.5);
    

    【讨论】:

    • 无需更改插入查询
    • @MaulikShah:当然必须更改插入。 '0,5' 不是有效的数字文字。
    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2021-10-30
    • 2016-09-29
    相关资源
    最近更新 更多