如何求解SQL错误:Oracle 11G中的ORA-01858



我正在尝试使用现有DDL文件创建一个表

CREATE TABLE SYSTEM.LS_Ss_VERSION 
    ( 
     ID NUMBER (20)  NOT NULL , 
     SSID NUMBER (20) , 
     CONTENT VARCHAR2 (4000 BYTE) , 
     CREATEDBY NUMBER (20) , 
     CREATED_ON DATE DEFAULT 'NULL' 
    ) 

错误是

SQL Error: ORA-01858: a non-numeric character was found where a numeric was expected
01858. 00000 -  "a non-numeric character was found where a numeric was expected"
*Cause:    The input data to be converted using a date format model was
           incorrect.  The input data did not contain a number where a number was
           required by the format model.

我已经搜索过Google,但无法获得适当的解决方案。PLESE在这里建议我一个解决方案。

请删除'null'到null,然后在http://sqlfiddle.com/#!4/256ab中尝试:

CREATE TABLE LS_Ss_VERSION 
    ( 
     ID NUMBER (20)  NOT NULL , 
     SSID NUMBER (20) , 
     CONTENT VARCHAR2 (4000 BYTE) , 
     CREATEDBY NUMBER (20) , 
     CREATED_ON DATE DEFAULT NULL 
    ) 

您的问题是:

CREATED_ON DATE DEFAULT 'NULL' 

'NULL' string ,因此数据库将其作为隐式数据转换,使用蒙版指定为默认值的任何掩码,例如to_date('NULL', 'DD-MON-YYYY'),这显然是胡说八道。

如果在系统放入null(不是字符串)的行时我们没有指定值

CREATED_ON DATE DEFAULT NULL

...因为无论如何都会发生这种情况。但是,鉴于列的名称,指定更有意义:

CREATED_ON DATE DEFAULT SYSDATE

最新更新