首页 文章

SQL错误:ORA-01861:文字与格式字符串不匹配

提问于
浏览
1

当我尝试运行此语句时,我在Oracle中不断收到此错误 . 我不确定格式错误的来源 . 也许有新鲜眼睛的人可以帮我解决这个问题 .

INSERT INTO Faculty
(FacNo, FacFirstName, FacLastName, FacCity, FacState,
 FacDept, FacRank, FacSalary, FacSupervisor, FacHireDate, FacZipCode)
 VALUES ('543-21-0987','VICTORIA','EMMANUEL','BOTHELL','WA','MS','PROF',120000.0,'','2001-04-15','98011-2242');

这是我不断得到的错误消息:

从第1行开始出错:命令中的错误 - 错误报告 - SQL错误:ORA-01861:文字与格式字符串01861不匹配.00000 - “文字与格式字符串不匹配”*原因:输入中的文字必须长度相同作为格式字符串中的文字(除了前导空格) . 如果已打开“FX”修饰符,则文字必须完全匹配,没有额外的空格 . *操作:更正格式字符串以匹配文字 .

以下是我试图将这些数据插入到表中的规范:

FACNO CHAR(11 BYTE)FACFIRSTNAME VARCHAR2(30 BYTE)FACLASTNAME VARCHAR2(30 BYTE)FACCITY VARCHAR2(30 BYTE)FACSTATE CHAR(2 BYTE)FACZIPCODE CHAR(10 BYTE)FACRANK CHAR(4 BYTE)FACHIREDATE DATE FACSALARY NUMBER(10, 2)FACSUPERVISOR CHAR(11字节)FACDEPT CHAR(6字节)

3 回答

  • 2

    最有可能的是,NLS_DATE_FORMAT,文字的默认日期格式与您的字符串不匹配 . 永远不要假设日期的格式是这样或那样的 . 使用 TO_DATE 函数指定格式,所以转换为:

    Insert (... to_date('2001-04-15','YYYY-MM-DD') ...

  • 0

    OldProgrammers的回答是正确的答案 . 将字符串显式转换为日期是最安全的 . MS-SQL通常会自动转换任何可识别为日期的内容,如果您的格式与系统的默认格式匹配,Oracle将执行此操作 . 我使用的所有oracle系统都使用'DD / MON / YY'或两位数日,三个字母的月份缩写和两位数的年份作为默认值并自动转换 . 不是正确的方法,但有时候每个人都喜欢懒惰 .

  • 0
    ORA-01861: literal does not match format string
    

    发生这种情况是因为您尝试输入带有格式字符串的文字,但格式字符串的长度与文字的长度不同 .

    您可以通过执行以下更改来克服此问题 .

    TO_DATE('2001-04-15','YYYY-MM-DD')
    

    作为一般规则,如果您使用TO_DATE函数,TO_TIMESTAMP函数,TO_CHAR函数和类似函数,请确保您提供的文字与您指定的格式字符串匹配

相关问题