我們平時做調查的時候,經常會疑惑某個資料到底是從哪來的,往往使用事件檢視器之類的捕捉sql來找,其實我們也可以用下邊這條sql試試。不過在資料量大的時候確實是比較慢。
drop table #
declare @t varchar(255),@c varchar(255)
create table # (name varchar(256),cols varchar(4000))
declare table_cursor cursor for
select a.name,b.name from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='U' and b.xtype in (35,99,167,175,231,239)
--上邊這幾個數字是我從sys.types查出來的,限制了只搜尋文本類型,具體使用的時候可以自行修改
open table_cursor fetch next from table_cursor
into @t,@c
while(@@fetch_status=0)
begin
exec('
set nocount on
if exists(select top 1 '+@c+' from [' + @t + '] where [' + @c + '] like ''%lond%'')
begin
if not exists(select 1 from # where name='''+@t+''')
insert into # select '''+@t+''','''+@c+'''
else
update # set cols=cols+'','+@c+''' where name='''+@t+'''
end
')
fetch next from table_cursor into @t,@c
end
close table_cursor deallocate table_cursor;
select * from #