5

次を実行して、その列名を持つテーブルを見つける方法を知っています。

select * From INFORMATION_SCHEMA.COLUMNS Where column_name = 'column value'

今必要なのは、特定の列データを持つテーブルを見つけることです。それがどの列に属しているかは関係ありません。見つけることができますが、どのテーブルを見ればよいかわかりません。

多くのテーブルがあるため、これらのテーブルを結合することは解決策ではありません。

お願いします。アイデアがあれば教えてください。ありがとう。

4

1 に答える 1

1

これはあなたのために仕事をしますか?

declare @data varchar(50)
    ,@sql varchar(max)
select @data = '%test%'

create table #Temp ([Table] varchar(200), [Column] varchar(200), [Data] varchar(max))

select @sql = isnull(@sql, '') + 'insert into #Temp select ''' + sys.tables.name + ''', ''' + sys.columns.name + ''', ' + sys.columns.name + ' from [' + sys.tables.name + '] where [' + sys.columns.name + '] like ''' + @data + ''';'
from sys.tables
inner join sys.columns
    on sys.columns.object_id = sys.tables.object_id

exec(@sql)

select * from #Temp order by [Table], [Column]
drop table #Temp
于 2013-06-24T09:53:57.457 に答える