2017-04-30 7 views

答えて

0

あなたは、その名前は、単純なクエリを実行すると、すべてのテーブルを取得することができます:

select table_name 
from information_schema.columns 
where column_name = 'phone_number'; 

あなたが実際に電話番号を取得するには、動的SQLのいくつかのフォームを必要とします。

select replace(replace('select ''[table_name]'' as which, [column_name] from [table_name] union all', '[table_name]', table_name), '[column_name]', column_name) 
from information_schema.columns 
where column_name = 'phone_number'; 

はその後、SMSSにこれをコピーし、最終的なunion allを削除し、クエリを実行します。私のお勧めは、次のような文を使用してSQLを生成することであろう。 I このバージョンでは、テーブル名に合った識別子があることが前提です。実際に必要な場合には、ロジックを拡張して識別子を引用することができます。

動的SQLまたはsp_MSforeachtableを使用してプロセスを完全に自動化することもできます。

+0

私は、クエリを自動化するために、動的SQLを使用したいが、私はPHONE_NUMBERでテーブル名を接続する方法がわかりません。 – adamek339

1

あなたはこのコードを試すことができます。

SELECT sys.columns.name AS ColumnName,sys.tables.name AS TableName 
FROM sys.columns JOIN sys.tables ON 
sys.columns.object_id = sys.tables.object_id 
WHERE sys.columns.name = 'phone_number' 
関連する問題