2017-03-01 153 views
0

我正在寫一個簡單的查詢來顯示我的表中列的名稱。Oracle SQL查詢顯示空結果

這是我使用的SQL:

select column_name from cols where table_name='StudentInfo'; 

出於某種原因,這個查詢結果中,即使我的StudentInfo表確實有列空的結果表。

+0

嘗試'從cols'選擇不同的表名,並檢查是否'「StudentInfo」'灑了這種方式。表格名稱可能以大寫字母或其他稍微不同的方式存儲。 –

+0

繁榮。你剛剛解決了我的問題。任何想法爲什麼甲骨文有這樣敏銳的大小寫? – Gary

+0

肯定會給出一個upvote和一個複選標記。謝謝!非常感謝 – Gary

回答

2

表名可能以大寫字母存儲,使得條件table_name='StudentInfo'失敗。請注意,Oracle(以及我知道的大多數其他RDBMS)以區分大小寫的方式比較字符串。對於不區分大小寫的比較,請在兩個參數上使用UPPER(或LOWER)。所以下面的查詢應該安全地工作:

select column_name from cols where upper(table_name)=upper('StudentInfo') 

有轉向字符串比較爲不區分大小寫,如改變會話參數NLS_COMPNLS_SORT的其他方式(參見,例如,https://stackoverflow.com/a/5391234/2630032如果適用此給予好評參考)。但是,通過使用UPPER,您可以獨立於此類設置進行查詢。

1

你可以去這樣的:

select column_name from cols where lower(table_name) like '%studentinfo%' 
+0

請注意,這也會匹配一個名爲「StudentInfo_Temp」的表格...... –

+0

@StephanLechner是的!它會顯示包含字符串'studentinfo'的所有記錄。但是,如果我們只想要具有所需符號的記錄,則應從查詢中刪除%。 –

+1

請注意,'like'也是區分大小寫的(取決於設置)。請參閱http://stackoverflow.com/a/5391234/2630032 –