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

CREATE PROCEDURE [dbo].[SP_FindValueInDB]

(

    @value VARCHAR(1024)

AS

BEGIN

    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 

        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) 

            FETCH NEXT FROM TABLES 

            INTO @table, @column 

        END 

    CLOSE TABLES 

    DEALLOCATE TABLES 

    SELECT FROM #t 

    DROP TABLE #t 

End

只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。

 

 

exec [SP_FindValueInDB] ’字段名'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值