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