如何处理以保留 Sql 关键字命名的表列?
Posted
技术标签:
【中文标题】如何处理以保留 Sql 关键字命名的表列?【英文标题】:How To Handle Table Column Named With Reserved Sql Keyword? 【发布时间】:2012-07-24 11:33:45 【问题描述】:我有一个表,其中有一个名为 RANK
的列,这是 Oracle 中的一个关键字。
现在我需要在这个表中插入数据:
insert into mytbl (RANK)
select RANK from other_table
执行此查询时出现以下错误:
ORA-00907: 缺少右括号
如何转义关键字?
【问题讨论】:
@Madhivanan - RANK 是最近才被引入 Oracle 词典的。更改遗留系统的数据模型通常是不可能的。 【参考方案1】:Oracle 使用双引号 "
转义保留字。
insert into mytbl ("RANK")
select "RANK"
from other_table
另外一点,Oracle 也需要正确的大小写。
【讨论】:
【参考方案2】:首先,列名和表名不能使用保留关键字。
Oracle 使用双引号"
来解析保留关键字,以便您可以解析关键字
通过将其放在双引号 ""
.
insert into mytbl ("RANK")
select "RANK"
from other_table
【讨论】:
【参考方案3】:就我而言,我的查询中有 ,。
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';
【讨论】:
【参考方案4】:前面已经提到过,但要强调的是,必须完全匹配大小写在所有用途中。当我需要提取GROUP
列并对其进行排序时,“组”不起作用。在这两种情况下都必须是“GROUP”,例如
select "GROUP" from PICKLIST
order by "GROUP"
【讨论】:
以上是关于如何处理以保留 Sql 关键字命名的表列?的主要内容,如果未能解决你的问题,请参考以下文章
C# 如何处理以编程方式创建的 ColorAnimation 和 Storyboard?