2017-03-09 14 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_DETAILSELECTLATLONG_TYPEという列が表示されます。

なぜ、このテーブルが結果に表示されないのですか?

これらのクエリはすべて、テーブルLATLONG_DETAILが存在するスキーマで実行されています。

ありがとうございました。

+1

あなたの意見は少し混ざっています。 USER_ALL_TABLESではなくALL_TABLESを試してください。後者は、現在のユーザーが所有するテーブルのビューを制限しています。 – unleashed

+0

'select table_name from user_tables where 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