如何逃避Oracle中的保留字?

时间:2009-07-22 00:01:34

标签: oracle reserved-words

在TSQL中,我可以使用Select [table] from tablename之类的东西来选择名为“table”的列。

如何在oracle中保留单词?

编辑:我试过方括号,双引号,单引号和反引号,它们不起作用......

作为进一步澄清,我有一个名为评论的专栏。因为这是一个保留字oracle正在试图用它来选择摇摆,它在解析查询时失败了。我试过从表名中选择“评论”,但它没有用。我会检查案件并回来。

5 个答案:

答案 0 :(得分:171)

通过快速搜索,Oracle似乎使用双引号(",例如"table"并且显然需要正确的大小写 - 对于任何感兴趣的人,MySQL默认值使用反引号(`)除非设置为使用双引号以实现兼容性。

答案 1 :(得分:31)

Oracle通常需要使用双引号来分隔SQL语句中的标识符名称,例如

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" "Alias"
WHERE "ThisCol" = 'That Value';

然而,它慷慨地允许省略双引号,在这种情况下它会悄悄地将标识符转换为大写:

SELECT MyColumn AS MyColAlias
FROM MyTable Alias
WHERE ThisCol = 'That Value';

内部转换为:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';

答案 2 :(得分:7)

当我将关键字作为列名之一时,

双引号在oracle中工作。

例如:

select t."size" from table t 

答案 3 :(得分:3)

Oracle确实使用双引号,但您很可能需要将对象名称放在大写字母中,例如“表”。默认情况下,如果创建没有双引号的对象,例如

CREATE TABLE table AS ...

Oracle会将对象创建为大写。但是,除非您使用双引号,否则引用不区分大小写!

答案 4 :(得分:-7)

您必须将列重命名为其他名称,因为Oracle保留了TABLE

您可以在oracle视图V$RESERVED_WORDS中查看Oracle的所有保留字。