查询整个数据库中某个特定值所在的表和字段的方法

来源:互联网 发布:云计算的前景 编辑:程序博客网 时间:2024/04/30 14:35

有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。

前提是要将这个存储过程放在所查询的数据库。

CodeCREATEPROCEDURE[dbo].[SP_FindValueInDB]
(
@valueVARCHAR(1024)
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNTON;
DECLARE@sqlVARCHAR(1024)
DECLARE@tableVARCHAR(64)
DECLARE@columnVARCHAR(64)

CREATETABLE #t (
tablename
VARCHAR(64),
columnname
VARCHAR(64)
)

DECLARE TABLESCURSOR
FOR

SELECT o.name, c.name
FROM syscolumns c
INNERJOIN sysobjects oON c.id= o.id
WHERE o.type='U'AND c.xtypeIN (167,175,231,239)
ORDERBY o.name, c.name

OPEN TABLES

FETCHNEXTFROM TABLES
INTO@table,@column

WHILE@@FETCH_STATUS=0
BEGIN
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)

FETCHNEXTFROM TABLES
INTO@table,@column
END

CLOSE TABLES
DEALLOCATE TABLES

SELECT*
FROM #t

DROPTABLE #t


End

原创粉丝点击