首页 文章

找到了一个非数字字符,其中包含数字

提问于
浏览
-1

当我尝试添加新行时,我得到“在预期数字的位置找到非数字字符”,我应该更改其中一种数据类型吗? “表格”中的数据类型

CREATE TABLE TITLES
(
TITLE_ID                       VARCHAR2(6) NOT NULL,
TITLE                          VARCHAR2(80) NOT NULL,
CATEGORY                       CHAR(12) NOT NULL, 
PUB_ID                         NUMBER(4) NULL, 
PRICE                          INTEGER NULL,
ADVANCE                        INTEGER NULL,
TOTAL_SALES                    INTEGER NULL,
NOTES                          VARCHAR2(200) NULL, 
PUBDATE                        DATE NOT NULL,
CONTRACT                       INTEGER NOT NULL,
PRIMARY KEY (TITLE_ID),
FOREIGN KEY (PUB_ID) REFERENCES PUBLISHERS(PUB_ID)
);

查询:

INSERT INTO TITLES (TITLE_ID,TITLE,CATEGORY,PUB_ID,PRICE,ADVANCE,TOTAL_SALES,NOTES,PUBDATE,CONTRACT) VALUES ('PC8888','Secrets of Silicon Valley','popular_comp',1389,20,8000,4095,'Muckraking reporting by two courageous women on the worlds largest computer hardware and software manufacturers.','12-JUN-87',1);

错误报告 - SQL错误:ORA-01858:找到一个非数字字符,其中数字是预期的01858. 00000 - “找到一个非数字字符,其中数字是预期的”*原因:要使用转换的输入数据日期格式模型不正确 . 输入数据不包含格式模型需要数字的数字 . *操作:修复输入数据或日期格式模型,以确保元素的数量和类型匹配 . 然后重试该操作 .

3 回答

  • 2

    '12-JUN-87' 不是字符串文字的日期 .

    如果要生成要插入表格的日期,则需要:

    如果您尝试使用字符串文字作为日期,则Oracle will try to implicitly convert it to a date使用 NLS_DATE_FORMAT session参数作为格式掩码 . 如果此格式掩码与字符串的格式不匹配,则将生成异常 .

    注意:会话参数可以由用户更改,并且每个用户可以不同,因此您不应该依赖此默认值 .

  • 2

    要在Oracle表中插入日期/时间值,您需要使用 TO_DATE 函数 . TO_DATE 函数允许您定义日期/时间值的格式 .

    例如,我们可以插入 '3-may-03 21:02:44' 值,如下所示:

    insert into table_name
    (date_field)
    values
    (TO_DATE('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss'));
    

    在您的情况下,使用正确的日期模式将其应用于 '12-JUN-87' . 您可以找到有关日期格式here的更多信息 .

  • 0

    我正在使用Fedora 25和oracle . 我收到了上述错误 . 我意识到我的数据没有问题 . 我将系统日期设置从丹麦改为美国,事情进展顺利 . 也许这可以帮助有需要的兄弟:-D

相关问题