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

脚本内容
-- 设置要查找的值
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!


































发表评论