【发布时间】:2014-04-27 21:11:46
【问题描述】:
我正在尝试将数据插入现有表并不断收到错误。
INSERT INTO Patient
(
PatientNo,
PatientFirstName,
PatientLastName,
PatientStreetAddress,
PatientTown,
PatientCounty,
PatientPostcode,
DOB,
Gender,
PatientHomeTelephoneNumber,
PatientMobileTelephoneNumber
)
VALUES
(
121,
'Miles',
'Malone',
'64 Zoo Lane',
'Clapham',
'United Kingdom',
'SW4 9LP',
'1989-12-09',
'M',
02086950291,
07498635200
);
错误:
Error starting at line : 1 in command -
INSERT INTO Patient (PatientNo,PatientFirstName,PatientLastName,PatientStreetAddress,PatientTown,PatientCounty,PatientPostcode,DOB,Gender,PatientHomeTelephoneNumber,PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom','SW4 9LP','1989-12-09','M',02086950291,07498635200)
Error report -
SQL Error: ORA-01861: literal does not match format string
01861. 00000 - "literal does not match format string"
*Cause: Literals in the input must be the same length as literals in
the format string (with the exception of leading whitespace). If the
"FX" modifier has been toggled on, the literal must match exactly,
with no extra whitespace.
*Action: Correct the format string to match the literal.
只是不知道为什么这种情况一直发生,我目前正在学习 SQL,任何帮助将不胜感激!
【问题讨论】:
-
我们可以看看你的表结构吗?我怀疑是
VARCHAR2或其他电话号码,而您将它们插入为NUMBER -
@MikeBurton CREATE TABLE Patient ( PatientNo CHAR(5) NOT NULL PRIMARY KEY, InvoiceNo CHAR(5) NOT NULL, PatientFirstName VARCHAR2(20) NOT NULL, PatientLastName VARCHAR2(20) NOT NULL, PatientStreetAddress VARCHAR2 (40) 非空,PatientTown VARCHAR2(20),PatientCounty VARCHAR2(20),PatientPostcode VARCHAR2(8) 非空,出生日期非空,性别 CHAR(1) 约束 pat_g_nn 非空,PatientHomeTelephoneNumber VARCHAR2(11) 约束 pat_phtn_nn);
-
我敢打赌这是
DOB专栏。如果是这种情况,请尝试使用TO_DATE函数正确解析日期字符串'1989-12-09'。 -
PatientHomeTelephoneNumber是 varchar2,您将其插入为NUMBER,它应该被''包围,我在您的 create 语句中看不到PatientMobileTelephoneNumber。
标签: sql oracle sql-insert