简体   繁体   English

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

[英]Specify a Valid number SQL Error: ORA-01722: invalid number

Please I need help in fixing the error message I have been getting when I try to INSERT a content to the table below.请帮助我修复我尝试将内容插入下表时收到的错误消息。 An example will help me understand it better.一个例子将帮助我更好地理解它。

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:插入:

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');

Error report - SQL Error: ORA-01722: invalid number 01722. 00000 - "invalid number" *Cause: The specified number was invalid.错误报告 - SQL 错误:ORA-01722:无效号码 01722。00000 - “无效号码” *原因:指定的号码无效。 *Action: Specify a valid number. *行动:指定一个有效的数字。

Use TO_DATE :使用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

It is a good practice to enlist column names like:征用如下列名是一个好习惯:

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

You should store HIRING_DATE as DATE not string.您应该将HIRING_DATE存储为DATE而不是字符串。

The date format in Oracle depends on the internationalization settings (and the default is not good). Oracle 中的日期格式取决于国际化设置(默认值不好)。 You can use the date keyword to specify dates using ISO standard formats:您可以使用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');

Notes:笔记:

  • HiringDate should be a date type, not a character type. HiringDate应该是日期类型,而不是字符类型。
  • You should list the columns in EMP in the insert .您应该在insert列出EMP中的列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM