查询整个数据库中某个特定值所在的表和字段的方法
有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,在网上搜了一下,找到一个比较好的方法,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。
前提是要将这个存储过程放在所查询的数据库。
CodeCREATEPROCEDURE[dbo].[SP_FindValueInDB]
(
@valueVARCHAR(1024)
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE@sqlVARCHAR(1024)
DECLARE@tableVARCHAR(64)
DECLARE@columnVARCHAR(64)
CREATETABLE #t (
tablename VARCHAR(64),
columnname VARCHAR(64)
)
DECLARE TABLES CURSOR
FOR
SELECT o.name, c.name
FROM syscolumns c
INNERJOIN sysobjects o ON c.id = o.id
WHERE o.type =’U’AND c.xtype IN (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
转载于//www.cnblogs.com/kevinGao/archive/2012/07/17/2605586.html
还没有评论,来说两句吧...