如何使用T-SQL在DB中搜索某些子字符串的所有文本字段

 loloyoyo555 发布于 2023-03-19 07:06
  • php
  • 我有一个庞大的架构,有数百个表和数千列.我知道一个特定的IP地址存储在这个数据库中的几个地方,但是我不确定它存储在哪个表或列中.基本上,我试图在任何地方找到这个IP地址存储在DB中,因此我可以将其更新为所有这些位置的新值.

    这是我在T-SQL语句中的第一个破解,用于打印出数据库中包含子字符串10.15.13的每个文本列的表和列名称以及值.

    现在,这是有效的.问题是,当我在Management Studio中执行它时,对sp_executesql的调用实际上将返回每个不返回任何内容的查询的所有空结果(即列没有任何带有该子字符串的记录),并且它填充结果窗口到它的最大值,然后我实际上看不出是否有任何印刷品.

    有没有更好的方法来编写此查询?或者我可以以不同的方式运行它,以便它只显示这个子字符串存在的表和列?

    DECLARE
        @SchemaName VARCHAR(50),
        @TableName VARCHAR(50),
        @ColumnName VARCHAR(50);
    BEGIN
        DECLARE textColumns CURSOR FOR
        SELECT s.Name, tab.Name, c.Name
        FROM Sys.Columns c, Sys.Types t, Sys.Tables tab, Sys.Schemas s
        WHERE s.schema_id = tab.schema_id AND tab.object_id = c.object_id AND c.user_type_id = t.user_type_id
        AND t.Name in ('TEXT','NTEXT','VARCHAR','CHAR','NVARCHAR','NCHAR');
    
        OPEN textColumns
    
        FETCH NEXT FROM textColumns
        INTO @SchemaName, @TableName, @ColumnName
    
        WHILE @@FETCH_STATUS = 0
        BEGIN
            DECLARE @sql NVARCHAR(MAX),
                    @ParamDef NVARCHAR(MAX),
                    @result NVARCHAR(MAX);              
            SET @sql = N'SELECT ' + @ColumnName + ' FROM ' + @SchemaName + '.' + @TableName + ' WHERE ' + @ColumnName + ' LIKE ''%10.15.13%''';
            SET @ParamDef = N'@resultOut NVARCHAR(MAX) OUTPUT';
    
            EXEC sp_executesql @sql, @ParamDef, @resultOut = @result OUTPUT;
    
            PRINT 'Column = ' + @TableName + '.' + @ColumnName + ', Value = ' + @result;
            FETCH NEXT FROM textColumns
            INTO @SchemaName, @TableName, @ColumnName       
        END
        CLOSE textColumns;
        DEALLOCATE textColumns;
    END
    

    我希望看到这样的结果,它显示了找到子字符串的表/列,以及该列中的完整值...

    Column = SomeTable.SomeTextColumn, Value = 'https://10.15.13.210/foo'
    Column = SomeTable.SomeOtherColumn, Value = '10.15.13.210'
    

    等等

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有