如何在 Oracle 中转义保留字?

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

我如何做到这一点,在甲骨文保留字?

编辑: 我试过方括号,双引号,单引号,和反引号,他们不工作..。

作为进一步的澄清,我有一个专栏,有人命名为评论。由于这是一个保留字 Oracle 正在抛出一个不稳定的尝试与它选择,它的失败时,解析查询。我试过从表名中选择“注释”,但是没有用。我查查案子再回来。

154325 次浏览

通过快速搜索,Oracle 似乎使用了双引号(",例如 "table") 而且显然需要正确的案子ーー然而,对于任何感兴趣的人,MySQL 默认使用反勾(‘) ,除非为兼容性设置为使用双引号。

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

CREATE TABLE table AS ...

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

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

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

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

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

例如:

select t."size" from table t