2009-07-22 43 views
98

在TSQL中,我可以使用类似Select [table] from tablename的东西来选择一个名为“table”的列。如何转义Oracle中的保留字?

如何在oracle中对保留字执行此操作?

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

作为进一步的澄清,我有这一个叫注释列。由于这是一个保留字,所以oracle正在试图用它进行选择,在解析查询时失败。我试过从表名选择“评论”,但它没有奏效。我会检查案件并回来。

+0

的可能重复甲骨文:究竟是什么在左右的表名引号做(http://stackoverflow.com/questions/563090/oracle-what-exactly-do -quotation-marks-around-the-table-name-do) – user123444555621 2014-05-03 14:39:54

回答

151

从快速搜索,甲骨文似乎使用双引号(",如"table",显然需要正确的情况下 -whereas,有兴趣的人士,当设置为使用双,除了中,MySQL默认使用反引号(`)引用兼容性。

+0

嘿,我可能是错的,但知道我错的人发布了正确答案吗? – eyelidlessness 2009-07-22 00:12:10

+1

我标记了你,因为我试图用双引号来逃避这个词,但它不起作用。 – Spence 2009-07-22 00:18:29

3

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

CREATE TABLE table AS ... 

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

29

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

您必须将该列重命名为其他名称,因为Oracle保留了TABLE

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

3

双引号在oracle中工作时,我有关键字作为列名之一。

如:

相关问题