2016-03-02 22 views
0

我在Oracle SQL中遇到了以下奇怪的問題。我有一個名爲schema_version表,但我不能在它運行簡單的選擇:使用雙引號括起表名時,只能在Oracle SQL中查找表。爲什麼?

> 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我不應該使用雙引號是好的。我可能會錯過什麼?感謝

回答

5

如果作爲

CREATE TABLE "schema_version" (...) 

其名稱被存儲在目錄中的確切(低級)的情況下創建該表。當您引用名稱加引號:

SELECT * FROM schema_version; 

名稱轉換爲默認大寫,因此該表不能被發現。當您引用所引用的名稱時:

SELECT * FROM "schema_version"; 

表名按原樣使用(小寫)並與目錄中的名稱匹配。

相關問題