gpt4 book ai didi

sql - 从表中插入/查询数据时出现 ORA-00904

转载 作者:搜寻专家 更新时间:2023-10-30 19:59:37 26 4
gpt4 key购买 nike

我遇到了流动错误:

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"

当我执行以下操作时

INSERT INTO driver 
(registration, make, model, gvw, year)
VALUES
('4585 AW','ALBION','RIEVER',20321,1963, ' ');

所以我临时删除了正文数据然后报错

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"

我有名为 year 和 body 的列,但我遇到了错误。我怎样才能解决这个问题?

最佳答案

您似乎在 DDL 中的引号下指定了列名。

Oracle 认为引号内的标识符区分大小写,因此创建列名为“body”或“year”的表不会解析查询中的 body 或 year,因为当您省略引号时,它会考虑上案例变体。

所以当你有这个:

 create table driver_case (registration varchar2(60), 
make varchar2(60),
model varchar2(60),
gvw number,
"year" number,
"body" varchar2(60));

然后尝试做

select year, body from driver_case

然后 Oracle 尝试在您的表中查找与“year”、“body”不同的列“YEAR”、“BODY”(记住,没有引号的标识符将转换为大写)。

你的解决方案?

  • 不要在 DDL 中用引号括起列名
  • 如果您忽略上述几点,那么您必须在所有 DML 语句中用引号括起列名。

我在这个 SQL Fiddle 中展示了以上观点

关于sql - 从表中插入/查询数据时出现 ORA-00904,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13327223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com