在使用双引号括起表名时,只能在Oracle SQL中查找表。为什么?

时间:2016-03-02 15:47:12

标签: sql oracle oracle11g

我对Oracle SQL有以下奇怪的问题。我有一个名为schema_version的表,但我不能对它进行简单的选择:

> SELECT * FROM schema_version;
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
Error at Line: 1 Column: 15

现在,如果我尝试运行相同的查询,但这次用双引号围绕表名,一切似乎运行良好:

> SELECT * FROM "schema_version";
< results are shown >

从我读过的内容https://stackoverflow.com/a/7425931/130758我应该没有使用双引号。我可能缺少什么?感谢

1 个答案:

答案 0 :(得分:5)

如果表格是

CREATE TABLE "schema_version" (...)

其名称以精确(较低)的形式存储在目录中。当您引用未加引号的名称时:

SELECT * FROM schema_version;

默认情况下,名称将转换为大写,因此无法找到该表。当您引用引用的名称时:

SELECT * FROM "schema_version";

表名按原样使用(小写)并与目录中的名称相匹配。