2017-03-09 35 views
0

我正試圖在具有特定列名的模式中查找表。所以我用下面的腳本,但它不返回任何東西:查詢查找列沒有顯示任何內容?

select a.table_name, column_name,DATA_TYPE,DATA_LENGTH 
from all_tab_columns a,USER_ALL_TABLES u 
where a.TABLE_NAME=u.TABLE_NAME 
and column_name like '%LATLONG%' 
order by DATA_LENGTH desc; 

在另一方面,表LATLONG_DETAILSELECT會顯示一列稱爲LATLONG_TYPE

那麼,爲什麼查詢不在其結果中顯示此表?

所有這些查詢都在表LATLONG_DETAIL所在的架構中運行。

感謝。

+1

你在混合你的意見。試試ALL_TABLES而不是USER_ALL_TABLES。後者限制了當前用戶擁有的表的視圖。 – unleashed

+0

是否從user_tables中選擇table_name,其中table_name ='LATLONG_DETAIL''返回任何內容?如果不是,請嘗試使用'all_tables'。如果這也不起作用,請嘗試'where'子句中的'upper(table_name)'。回報你發現的內容。 – mathguy

+0

@ TheGrandDuke:謝謝。我不知道USER_ALL_TABLES僅限於當前用戶的表格。 ALL_TABLES有效。 – rbhat

回答

1

你說你擁有表LATLONG_DETAIL。我唯一能想到的是爲什麼你的查詢沒有返回任何東西,那就是列名不是大寫。此查詢是否返回任何內容?

SELECT a.table_name, column_name,DATA_TYPE,DATA_LENGTH 
    FROM all_tables u JOIN all_tab_columns a 
         ON u.table_name = a.table_name 
        AND u.owner = a.owner 
WHERE UPPER(column_name) LIKE '%LATLONG%'; 
+0

感謝您的回覆。使用ALL_TABLES工作。 – rbhat

相關問題