144

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

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

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

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

4

5 回答 5

211

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

于 2009-07-22T00:05:30.820 回答
37

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';
于 2009-07-22T02:25:52.597 回答
8

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

例如:

select t."size" from table t 
于 2017-03-30T14:36:14.150 回答
4

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

CREATE TABLE table AS ...

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

于 2009-07-22T00:19:28.857 回答
-9

您必须将该列重命名为其他名称,因为TABLE它是由 Oracle 保留的。

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

于 2013-12-05T10:47:18.640 回答