Mic*_*ael 2 sql database oracle11g
我收到了流动的错误:
Error starting at line 1 in command:
INSERT INTO driver (registration, make, model, gvw, year, body) VALUES('4585 AW','ALBION','RIEVER',20321,1963, ' ');
Error at Command Line:1 Column:53
Error report:
SQL Error: ORA-00904: "BODY": invalid identifier
00904. 00000 - "%s: invalid identifier"
Run Code Online (Sandbox Code Playgroud)
当我做以下
INSERT INTO driver
(registration, make, model, gvw, year)
VALUES
('4585 AW','ALBION','RIEVER',20321,1963, ' ');
Run Code Online (Sandbox Code Playgroud)
所以我暂时删除了正文数据,然后给出了错误
Error starting at line 1 in command:
INSERT INTO driver (registration, make, model, gvw, year) VALUES('4585 AW','ALBION','RIEVER',20321,1963)
Error at Command Line:1 Column:53
Error report:
SQL Error: ORA-00904: "YEAR": invalid identifier
00904. 00000 - "%s: invalid identifier"
Run Code Online (Sandbox Code Playgroud)
我的列都叫年和身体,但我收到错误.我怎样才能解决这个问题?
好像您在DDL中的引号下指定了列名.
Oracle将引号下的标识符视为区分大小写,因此创建列名为"body"或"year"的表将无法解析查询中的正文或年份,因为当您省略引号时,它会考虑大写变体.
所以当你有这个:
create table driver_case (registration varchar2(60),
make varchar2(60),
model varchar2(60),
gvw number,
"year" number,
"body" varchar2(60));
Run Code Online (Sandbox Code Playgroud)
然后尝试做
select year, body from driver_case
Run Code Online (Sandbox Code Playgroud)
然后Oracle尝试查找列"YEAR","BODY"(记住,没有带引号的标识符转换为大写),这与表中的"year","body"不同.
您的解决方案
我在这个SQL小提琴中演示了上述观点