【问题标题】:How To Handle Table Column Named With Reserved Sql Keyword?如何处理以保留 Sql 关键字命名的表列?
【发布时间】:2012-07-24 11:33:45
【问题描述】:

我有一个表,其中有一个名为 RANK 的列,这是 Oracle 中的一个关键字。

现在我需要在这个表中插入数据:

insert into mytbl (RANK)
select RANK from other_table

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

ORA-00907: 缺少右括号

如何转义关键字?

【问题讨论】:

  • @Madhivanan - RANK 是最近才被引入 Oracle 词典的。更改遗留系统的数据模型通常是不可能的。

标签: sql 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"
        

        【讨论】:

          猜你喜欢
          • 2014-11-13
          • 1970-01-01
          • 1970-01-01
          • 2010-09-22
          • 2012-10-22
          • 1970-01-01
          • 1970-01-01
          • 2012-05-09
          相关资源
          最近更新 更多