• 选择页面风格:
  • 查询数据库中任意文本所在的表及字段

    作者:追梦 更新时间:2020-04-25 17:17:27 来源:原创 【字号: 】 浏览
    [导读]查询数据库中是否有特定的文本,如果有,显示所在的表名及所在的字段

    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 

    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

    -------------------

    如下为查询数据库中包含admin的所有的表及字段

    EXEC SP_FindValueInDB 'admin'

    {$FL_ggad250}
    栏目导航