如何处理以保留的Sql关键字命名的表列?

时间:2012-07-24 11:33:46

标签: sql oracle

我有一个旧表,其中有一个名为“RANK”的列,此名称是Oracle中的关键字, 我不知道这个表是如何创建的,我不能重命名这个列,因为它被其他应用程序使用。 现在我需要在此表中插入数据:

insert into mytbl (RANK)
select RANK from other_table

执行此查询时出现以下错误:

ORA-00907:缺少右括号

请说,我该如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:20)

Oracle使用双引号"来转义保留字。

insert into mytbl ("RANK")
select "RANK" 
from other_table

另一个注意事项,Oracle也需要正确的案例。

答案 1 :(得分:6)

首先,您不应将保留关键字用作列名和表名。

Oracle使用双引号"来解析保留的关键字,以便您可以解析关键字 将其置于双引号""

insert into mytbl ("RANK")
select "RANK" 
from other_table

答案 2 :(得分:0)

就我而言,在我的查询中有。

UPDATE SCHEMA.TABLE SET PART_NO = '1S7F530400', WHERE PART_NO = '1S7?F5304?00';

这应该是:

UPDATE SCHEMA.TABLE SET PART_NO = '1S7F530400' WHERE PART_NO = '1S7?F5304?00';