在TSQL中,我可以使用Select [table] from tablename之类的东西来选择一个名为"表"的列。
如何在oracle中对保留字执行此操作?
编辑:我试过方括号,双引号,单引号和反引号,它们不起作用...
作为进一步的说明,我有一列名为"评论"的人。 由于这是一个保留字,因此oracle正在使尝试选择它的方法不稳定,因此在解析查询时会失败。 我试过从表名中选择"注释",但是没有用。 我会检查情况再回来。
Oracle的可能重复项:表名两端的引号究竟是做什么的?
通过快速搜索,Oracle似乎使用了双引号(",例如"table"),并且显然需要正确的大小写,而对于感兴趣的人,MySQL默认使用反引号(`),除非设置为对双引号使用。兼容性。
嘿,我可能错了,但是知道我错了的人可以发布正确的答案吗?
我把你打倒了,因为我试图用双引号使这个单词转义,但没有用。
关于双引号,双眼失明是正确的。但是,如果使用带引号的名称,则Oracle区分大小写(通常Oracle名称全为大写)。
病态请仔细检查所有内容,如果我可以使用双引号将其标记为正确,请返回并标记为正确。
您是否可以编辑繁荣的答案,以补充您必须完全限定名称并提供正确的大小写。
摘自萨特作品的特定译本。 Havent能够自己进行追踪。
@Spence,你是什么意思?您不必"完全限定"名称-您要做的就是正确输入大小写。
默认情况下,Oracle将大写所有标识符。因此,如果您需要小写字符或特殊字符,或者标识符是Oracle保留字,则需要将其括在双引号中。由于双引号保留大小写,因此标识符也必须是正确的大小写。
我使用SQL Developer v4创建了一个带有"别名"字段的表,并命中了Oracle 11g Release 2 Express数据库。当我写" ALIAS"而不是别名时,我的选择起作用了。
不适用于触发器,请尝试为名称违反ORA-30507(例如DATABASE)的表创建触发器。
在所有大写的" TABLE"中尝试。
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视图V$RESERVED_WORDS中查看Oracle的所有保留字。
尝试select * from V$RESERVED_WORDS时得到ORA-00942。