SQL列搜索..然后将其用作表

时间:2017-11-10 22:13:51

标签: sql sql-server

在我的SQL中相当生疏..我正在寻找的是从我的所有表中搜索给定列开始

SELECT @myTables = TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%myColumn%'

然后我想使用结果并对每条记录进行类似的搜索

select * from @myTables[0]
select * from @myTables[1]

...

依旧等等。我希望我能清楚地描述我在寻找什么。

感谢您的帮助。

2 个答案:

答案 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)