公司网站不备案,北京vi设计公司北京广告设计公司,营销软文小短文,广州小程序定制开发目标#xff1a;在SQL Server中查找所有表的UserId 50的记录
创建一个表变量来存储所有包含’UserId’列的表的名称。然后使用一个游标遍历这些表#xff0c;并对每个表执行一个动态SQL查询
DECLARE TableName nvarchar(256), ColumnName nvarchar(128), SearchStr2 nvarc…目标在SQL Server中查找所有表的UserId 50的记录
创建一个表变量来存储所有包含’UserId’列的表的名称。然后使用一个游标遍历这些表并对每个表执行一个动态SQL查询
DECLARE TableName nvarchar(256), ColumnName nvarchar(128), SearchStr2 nvarchar(110)
SET ColumnName NUserId
SET SearchStr2 N50DECLARE Tables TABLE(TABLE_NAME nvarchar(256),COLUMN_NAME nvarchar(128),BUFFER nvarchar(max)
)INSERT INTO Tables
SELECT QUOTENAME(T.TABLE_SCHEMA) . QUOTENAME(T.TABLE_NAME), COLUMN_NAME,
FROM INFORMATION_SCHEMA.TABLES AS T
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS C
ON T.TABLE_NAME C.TABLE_NAME
WHERE C.COLUMN_NAME LIKE % ColumnName %
AND TABLE_TYPE BASE TABLEDECLARE TableCursor CURSOR FOR
SELECT TABLE_NAME, COLUMN_NAME FROM TablesOPEN TableCursor
FETCH NEXT FROM TableCursor INTO TableName, ColumnNameWHILE FETCH_STATUS 0
BEGINEXEC(SELECT * FROM TableName WHERE ColumnName SearchStr2)FETCH NEXT FROM TableCursor INTO TableName, ColumnName
ENDCLOSE TableCursor
DEALLOCATE TableCursor运行Sql脚本可以看到所有包含’UserId’列的表的记录都被筛选出来了 这里筛选的表是包含’UserId’列的表例如’CreationUserId’也会参与后续匹配如果你想要筛选所有的表可以把查询条件改成
WHERE C.COLUMN_NAME ColumnName 如果查询结果想带上表名称在动态SQL查询现在返回一个名为TableName的额外列即可
EXEC(SELECT TableName AS TableName, * FROM TableName WHERE ColumnName SearchStr2)