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

深碍√TFBOYSˉ_ 2021-12-24 04:33 268阅读 0赞

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

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

ContractedBlock.gif 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

转载于:https://www.cnblogs.com/kevinGao/archive/2012/07/17/2605586.html

发表评论

表情:
评论列表 (有 0 条评论,268人围观)

还没有评论,来说两句吧...

相关阅读