当前位置: 首页 > 知识库问答 >
问题:

指定有效数字SQL错误:ORA-01722:无效数字

曾嘉瑞
2023-03-14

请帮助我修复在尝试将内容插入下表时收到的错误消息。举个例子可以帮助我更好地理解它。

CREATE TABLE EMP (
        EMP_ID      INTEGER     NOT NULL
    , FNAME     VARCHAR(30) NOT NULL
    , LNAME     VARCHAR(30)     NOT NULL
    , ADDRESS   VARCHAR(50)     NOT NULL
    , SALARY    VARCHAR(50)     NOT NULL
    , DOB       DATE            NOT NULL
    , SHIFTS    VARCHAR2(20)    NOT NULL
    , SSN       CHAR(11)        NOT NULL
    , PHONE         CHAR(12)    NOT NULL
    , HIRING_DATE   CHAR(12)    NOT NULL
    , EMAIL     VARCHAR2(50)    NOT NULL
);

插入:

INSERT INTO EMP
VALUES(1,'Erica', 'Brandon', '425 Main Street', 'Credit Card', 
       '1965-06-30', 'Evening', '610-24-1111',
       '603-547-8296', '2010-01-16', 'ejohnson@fakemail.com');

错误报告-SQL错误:ORA-01722:无效号码01722。00000-"无效号码"*原因:指定的号码无效。*操作:指定有效号码。

共有2个答案

金令
2023-03-14

Oracle中的日期格式取决于国际化设置(默认不好)。您可以使用date关键字使用ISO标准格式指定日期:

INSERT INTO EMP
    VALUES(1, 'Erica', 'Brandon', '425 Main Street', 'Credit Card', 
           DATE '1965-06-30', 'Evening', '610-24-1111',
           '603-547-8296', '2010-01-16', 'ejohnson@fakemail.com');

笔记:

  • HiringDate应该是日期类型,而不是字符类型
  • 您应该在插入中列出EMP
孔俊捷
2023-03-14

使用TO_DATE

INSERT INTO EMP 
VALUES(1,
       'Erica',
       'Brandon',
       '425 Main Street',
       'Credit Card',
       TO_DATE('1965-06-30', 'yyyy-mm-dd'),
       'Evening',
       '610-24-1111',
       '603-547-8296',
       TO_DATE('2010-01-16', 'yyyy-mm-dd'),
       'ejohnson@fakemail.com');

SqlFiddleDemo

一个很好的做法是使用如下的列名:

INSERT INTO EMP(EMP_ID,FNAME,LNAME...)
VALUES (...);

您应该将招聘_DATE存储日期,而不是字符串。

 类似资料:
  • 对于某人来说,这是一个非常简单的方法,下面的插入内容给了我 ORA-01722:无效的数字 为什么?

  • 我正在我的Oracle客户机中运行下面提到的查询,我得到了 ORA-01722:无效号码 错误。我知道这个问题是由于TAG_VALUE列的类型是“”,我正在将其转换为数字,然后在where子句中使用该字段。我尝试过使用“”功能,但这也没有帮助。如果我运行查询时忽略了最后一个 where 条件,代码为

  • 我不明白为什么我会犯这个错误。 当我对交互式报表执行此查询时,它会引发 ORA-01722 错误。此查询不仅在 SQL 开发人员中正确运行,而且作为经典报表正确运行。当我将类型更改为交互式报表时,再次抛出相同的错误。 我该怎么办? 提前多谢。

  • 这是我的桌子。 我运行此插入语句 我得到这个错误信息: 从命令中的第1行开始出错-插入计划(SCHEDULE_IDARRV_TIMEDEP_TIMEBUS_TRANSFERSBUS_IDTRAVEL_DIRECTIONWEEK_DAY)值(SEQ_SCHEDULE.NEXTVAL,'10','11','White Oak','2','North','4') 错误报告-SQL错误:ORA-01722

  • 一个非常容易的人,下面的插入是给我

  • 我正在创建一个对账报告,我主要是想知道每个发送批次的单据价值。 批处理 ID 位于其自己的列中,发送的数据位于一列中,并以逗号分隔,请参阅下面随机生成的示例: 每个批次至少有2行,最大可以是2000行。在此表中,我有两列:Batch ID和Data 我需要将所有文件金额相加,在这种情况下为100 200。 目前,我正在尝试通过此查询完成工作: 但是以错误ORA-01722结束:无效数字 提前感谢,