如何转义 Oracle 中的保留字?

问题描述 投票:0回答:5

在 TSQL 中,我可以使用类似

Select [table] from tablename
的内容来选择名为“table”的列。

如何对 oracle 中的保留字执行此操作?

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

作为进一步澄清,我有一个专栏,有人命名为评论。由于这是一个保留字,oracle 正在尝试使用它进行选择,因此在解析查询时会失败。我尝试过从表名中选择“评论”,但它不起作用。我会检查一下情况然后回来。

oracle reserved-words
5个回答
224
投票

通过快速搜索,Oracle 似乎使用双引号(

"
,例如
"table"
并且显然需要正确的大小写,而对于任何感兴趣的人来说,MySQL 默认使用反引号 (`),除非设置为使用双引号以实现兼容性。


39
投票

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';

10
投票

当我将关键字作为列名之一时,双引号在 Oracle 中起作用。

例如:

select t."size" from table t 

5
投票

Oracle 确实使用双引号,但您很可能需要将对象名称设置为大写,例如“桌子”。默认情况下,如果您创建一个不带双引号的对象,例如

CREATE TABLE table AS ...

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


-9
投票

您必须将该列重命名为其他名称,因为

TABLE
是 Oracle 保留的。

在oracle视图中可以看到Oracle的所有保留字

V$RESERVED_WORDS

© www.soinside.com 2019 - 2024. All rights reserved.