在我的SQL中相当生疏..我正在寻找的是从我的所有表中搜索给定列开始
SELECT @myTables = TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%myColumn%'
然后我想使用结果并对每条记录进行类似的搜索
select * from @myTables[0]
select * from @myTables[1]
...
依旧等等。我希望我能清楚地描述我在寻找什么。
感谢您的帮助。
答案 0 :(得分:0)
它看起来像是一些复杂的逻辑,所以你可能需要看一下游标。在这种情况下,您可能会分别操作每个表名:
declare
cr cursor local for
select table_name
from INFORMATION_SCHEMA.TABLES t;
declare @tName nvarchar(128);
open cr;
fetch next from cr into @tName ;
while @@FETCH_STATUS =0
begin
print @tName;
// do whatever you need here
fetch next from cr into @tName ;
end;
close cr;
deallocate cr;
以下是其功能的完整说明:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/cursors-transact-sql
答案 1 :(得分:0)
SELECT 'SELECT * FROM '+ TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%myColumn%'
此查询将返回您期望的所有选择查询。
如果您想获得这些选择查询的结果:
DECLARE @SQLQuery VARCHAR(MAX)
SELECT @SQLQuery = COALESCE(@SQLQuery,'')+'SELECT * FROM '+ TABLE_NAME+';'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%myColumn%'
SELECT @SQLQuery
EXEC (@SQLQuery)