天天看點

查詢整個資料庫中某個特定值所在的表和字段的方法

 隻需要傳入一個想要查找的值,即可查詢出這個值所在的表和字段名。

create procedure [dbo].[sp_findvalueindb]

(

@value varchar(1024)

)

as

begin

-- set nocount on added to prevent extra result sets from

-- interfering with select statements.

set nocount on;

declare @sql varchar(1024)

declare @table varchar(64)

declare @column varchar(64)

create table #t (

tablename varchar(64),

columnname varchar(64)

declare tables cursor

for

select o.name, c.name

from syscolumns c

inner join sysobjects o on c.id = o.id

where o.type = 'u' and c.xtype in (167, 175, 231, 239)

order by o.name, c.name

open tables

fetch next from tables

into @table, @column

while @@fetch_status = 0

set @sql = 'if exists(select null from [' + @table + '] '

set @sql = @sql + 'where rtrim(ltrim([' + @column + '])) like ''%' + @value + '%'') '

set @sql = @sql + 'insert into #t values (''' + @table + ''', '''

set @sql = @sql + @column + ''')'

exec(@sql)

end

close tables

deallocate tables

select *

from #t

drop table #t

 例如,要查詢值'bbq chic sw',結果如下:

查詢整個資料庫中某個特定值所在的表和字段的方法

  傳回三條記錄,說明這個值存在于三個表中,分别為_dts_menudef, g_dts_menudef和g_recipe中,字段名分别為name1, name1, name   

最新内容請見作者的github頁:http://qaseven.github.io/