2014-06-18 58 views

回答

10

嘗試此(一種已知的列):

CREATE TABLE mytab(mycol VARCHAR2(30 CHAR));

SELECT table_name FROM user_tab_columns WHERE column_name='MYCOL';

MYCOLcolumn_name='MYCOL'殼體;

乾杯!

+1

還有其他視圖可用:USER_TAB_COLS, ALL_TAB_COLS,ALL_TAB_COLUMNS。根據您的訪問權限,還可以使用這些權限:DBA_TAB_COLS,DBA_TAB_COLUMNS – Roobie

12

基於@ Roobie的解決方案,下面的代碼在您有權訪問的所有模式中進行搜索,以防表中的數據不在您自己的模式中。還添加了不區分大小寫的匹配。

SELECT owner, table_name 
    FROM all_tab_columns 
    WHERE UPPER(column_name) = UPPER('MYCOL'); 
+0

嘿喬希,很好的編輯。我認爲你不需要左側的UPPER(UPPER(column_name))。乾杯! – Roobie

+2

@Roobie,99.8%的時間,但總是有蝙蝠東西瘋狂供應商代碼的可能性(考慮爲SQL Server設計的應用程序,供應商提供了Oracle版本)。您可以在Oracle中創建混合大小寫的列,但不應該這樣做。例如:'CREATE TABLE stupid_table(「MixedCaseColumn」INTEGER PRIMARY KEY);'。將UPPER放在兩側可以覆蓋近百%的案例。爲了一個好笑,看看這個小提琴我只是放在一起:http://sqlfiddle.com/#!4/2840e/1/0 –

+0

哦。明白了你的觀點。乾杯 – Roobie

-4
select * from all_updatable_columns where column_name like 'reqd col name';