如何在Oracle中转义保留字?

hmae6n7t  于 2023-11-17  发布在  Oracle
关注(0)|答案(5)|浏览(213)

在TSQL中,我可以使用类似Select [table] from tablename的东西来选择一个名为“table”的列。
我如何在oracle中为保留字做这件事?
编辑:我试过方括号,双引号,单引号和反引号,它们不起作用。
作为进一步的澄清,我有一个列,有人命名为comment。由于这是一个保留字,甲骨文正在尝试选择它,它在解析查询时失败。我已经尝试从tablename中选择“comment”,但它不起作用。我将检查大小写并返回。

bvk5enib

bvk5enib1#

从快速搜索,Oracle似乎使用双引号(",例如"table",显然需要正确的大小写-而对于任何感兴趣的人,MySQL默认使用反引号(`),除非为了兼容性而设置为使用双引号。

js81xvg6

js81xvg62#

Oracle通常需要双引号来分隔SQL语句中标识符的名称,例如。

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" "Alias"
WHERE "ThisCol" = 'That Value';

字符串
但是,它允许省略双引号,在这种情况下,它会悄悄地将标识符转换为NULL:

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

6g8kf2rb

6g8kf2rb3#

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

select t."size" from table t

字符串

iovurdzv

iovurdzv4#

Oracle确实使用双引号,但您最有可能需要将对象名称置于大写形式,例如“TABLE”。

CREATE TABLE table AS ...

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

mwecs4sa

mwecs4sa5#

您必须将该列重命名为其他名称,因为TABLE是Oracle保留的。
您可以在Oracle视图V$RESERVED_WORDS中查看Oracle的所有保留字。

相关问题