• 日常搜索
  • 端口查询
  • IP查询
  • 在线工具
  • 搜本站

SQL Server 数据库查询脚本(SQL Server查找数据)

SQL Server数据库查找包含特定值的表,查询结果包括:数据库名、表名、列名和匹配的值。

SQL Server 数据库查询脚本(SQL Server查找数据)  第1张

脚本内容

-- 设置要查找的值
DECLARE @SearchValue NVARCHAR(100) = 'LW50.COM';

-- 创建一个临时表来存储结果
CREATE TABLE #SearchResults (
    DatabaseName NVARCHAR(128),  -- 数据库名
    TableName NVARCHAR(256),     -- 表名
    ColumnName NVARCHAR(128),    -- 列名
    FoundValue NVARCHAR(MAX)     -- 匹配的值
);

-- 指定数据库名称
DECLARE @DatabaseName NVARCHAR(128) = 'RYAccountsDB';

-- 动态生成 SQL,切换到当前数据库
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = 'USE ' + QUOTENAME(@DatabaseName) + ';
            DECLARE @TableName NVARCHAR(256);
            DECLARE @ColumnName NVARCHAR(128);
            DECLARE @Query NVARCHAR(MAX);

            -- 游标遍历当前数据库的所有用户表
            DECLARE TableCursor CURSOR FOR
            SELECT TABLE_SCHEMA + ''.'' + TABLE_NAME, COLUMN_NAME
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE DATA_TYPE IN (''char'', ''varchar'', ''nchar'', ''nvarchar'', ''int'', ''bigint'', ''smallint'', ''tinyint'', ''decimal'', ''numeric'', ''float'', ''real'', ''money'', ''smallmoney'', ''text'', ''ntext'');

            OPEN TableCursor;

            FETCH NEXT FROM TableCursor INTO @TableName, @ColumnName;

            WHILE @@FETCH_STATUS = 0
            BEGIN
                -- 动态生成查询语句
                SET @Query = ''INSERT INTO #SearchResults (DatabaseName, TableName, ColumnName, FoundValue)
                               SELECT ''''' + @DatabaseName + ''''' AS DatabaseName,
                                      '''''' + @TableName + '''''' AS TableName,
                                      '''''' + @ColumnName + '''''' AS ColumnName,
                                      CAST('' + @ColumnName + '' AS NVARCHAR(MAX)) AS FoundValue
                               FROM '' + @TableName + ''
                               WHERE CAST('' + @ColumnName + '' AS NVARCHAR(MAX)) LIKE ''''%' + @SearchValue + '%'''''';

                -- 执行动态 SQL
                BEGIN TRY
                    EXEC sp_executesql @Query;
                END TRY
                BEGIN CATCH
                    -- 如果查询出错(例如列类型不匹配),跳过该列
                    PRINT ''Error searching in table: '' + @TableName + '', column: '' + @ColumnName;
                END CATCH

                FETCH NEXT FROM TableCursor INTO @TableName, @ColumnName;
            END;

            CLOSE TableCursor;
            DEALLOCATE TableCursor;';

-- 执行动态 SQL
EXEC sp_executesql @SQL;

-- 查询结果,显示包含目标值的详细信息
SELECT DISTINCT DatabaseName, TableName, ColumnName, FoundValue
FROM #SearchResults;

-- 清理临时表
DROP TABLE #SearchResults;

脚本说明

  • 设置查找值:

在 @SearchValue 中设置要查找的值(例如 LW50.COM,替换成你要查找你内容)。

  • 指定数据库:

在 @DatabaseName 中指定数据库名称(例如 RYAccountsDB,替换成你要查找的数据库名)。

最后

查询结果看图1,列出了表名,列名,方便定位。

类似工具:

END!

文章目录
  • 脚本内容
  • 脚本说明
  • 最后
  • 发表评论