繁体   English   中英

ORA-01858:找到一个非数字字符,其中数字是预期的? 即使数值是数字?

[英]ORA-01858: a non-numeric character was found where a numeric was expected? Even when the values are numbers?

这是表格

    CREATE TABLE Employee
    (EmpID number(5) primary key,
    SIN Number(9) Not null,
    LastName Varchar2(25) Not null,
    FirstName Varchar2(25),
    Street Varchar2(30),
    City Varchar2(25),
    Province Char(2),
    PostalCode Varchar2(7),
    JobCode Number(4) Not null,
    Foreign Key(JobCode) REFERENCES Job,
    IncomeTax Char(1),
    BirthDate Date,
    HireDate Date,
    JobCodeDate Date)
    TABLESPACE users;

这是我试图插入的行,只有三个数值,所有这些都是数字,据我所见。

INSERT INTO Employee VALUES(97319,516303417,'Novak','Gerry','6803 Park Ave.','Moose Jaw','SK','S6H 1X7',3000,'N','24-Aug-86','07-Jul-03','07-Jul-03');

ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected

我相信问题是日期列尝试使用此语法to_date('07-Jul-03','DD-MON-YY')

INSERT INTO Employee 
VALUES(97319,516303417,'Novak','Gerry','6803 Park Ave.','Moose Jaw','SK','S6H 1X7',3000,'N',to_date('24-Aug-86', 'DD-MON-YY'),to_date('07-Jul-03','DD-MON-YY'),to_date('07-Jul-03','DD-MON-YY'));

SQL-Fiddle: http ://sqlfiddle.com/#!4/0e9df/2

alter SESSION set NLS_DATE_FORMAT = 'DD-Mon-YY';

我只需输入此内容,以便sql将正确执行插入查询中的日期格式

INSERT语句中列出的字段顺序与Oracle期望它们的顺序之间可能存在差异。 我建议再次尝试使用INSERT的完整语法(即在执行INSERT时指定字段名称)。 这样,绝对清楚地表明了场相关的价值。

所以像这样:

INSERT 
INTO Employee (EmpID, SIN, LastName, FirstName, Street, City, Province, PostalCode, JobCode, IncomeTax, BirthDate, HireDate, JobCodeDate)
VALUES(97319,516303417,'Novak','Gerry','6803 Park Ave.','Moose Jaw','SK','S6H 1X7',3000,'N','1986-08-24','2003-07-07','2003-07-07');

暂无
暂无

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

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