在 TSQL 中,我可以使用类似Select [table] from tablename
选择名为“table”的列。
我如何为 oracle 中的保留字执行此操作?
编辑:我试过方括号、双引号、单引号和反引号,它们不起作用......
作为进一步的澄清,我有一个名为评论的专栏。由于这是一个保留字,oracle 正在尝试使用它进行选择,因此在解析查询时失败。我试过从表名中选择“评论”,但没有奏效。我会检查情况并回来。
在 TSQL 中,我可以使用类似Select [table] from tablename
选择名为“table”的列。
我如何为 oracle 中的保留字执行此操作?
编辑:我试过方括号、双引号、单引号和反引号,它们不起作用......
作为进一步的澄清,我有一个名为评论的专栏。由于这是一个保留字,oracle 正在尝试使用它进行选择,因此在解析查询时失败。我试过从表名中选择“评论”,但没有奏效。我会检查情况并回来。
通过快速搜索,Oracle 似乎使用双引号 ( "
, eg "table"
)并且显然需要正确的大小写— 而对于任何感兴趣的人来说,MySQL 默认使用反引号 (`),除非设置为使用双引号以实现兼容性。
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';
当我将关键字作为列名之一时,双引号在 oracle 中起作用。
例如:
select t."size" from table t
Oracle 确实使用双引号,但您很可能需要将对象名称大写,例如“TABLE”。默认情况下,如果您创建一个不带双引号的对象,例如
CREATE TABLE table AS ...
Oracle 会将对象创建为大写。但是,除非您使用双引号,否则引用不区分大小写!
您必须将该列重命名为其他名称,因为TABLE
它是由 Oracle 保留的。
您可以在 oracle 视图中看到 Oracle 的所有保留字V$RESERVED_WORDS
。