查看名称如 'ENG_Parameters_%' 的表中的列

View columns from tables where name like 'ENG_Parameters_%'

我正在尝试创建一个将加载列的 SQL 视图:

[item],[manufacturer_item],[symbol],[footprint] 

来自与名称 ENG_Parameter_%.

匹配的任何 table

我需要让它保持通用,因为在任何时候,ENG_Parameter_% 可能有新的或删除的 table,所以我不能硬编码任何 table名字。

是否有一个 SQL 命令可以用来生成这个?

创建视图的动态sql:

DECLARE @SQL nvarchar(2000);

SET @SQL=N' SELECT
  ''CREATE VIEW [vw'' + t.name + '']
  AS
  SELECT [item],[manufacturer_item],[symbol],[footprint] 
  FROM ['' + t.name + '']'' AS sql_for_view
  FROM sys.columns c
  INNER JOIN sys.tables t
  ON c.object_id=t.object_id
  WHERE c.name LIKE ''ENG_Parameter_%''';

exec sp_executesql @SQL;

感谢 @OwlsSleeping answer (),这正是我所需要的:

DECLARE @SQL nvarchar(max)

select @SQL =  COALESCE(@SQL , '') + 'SELECT [item],[manufacturer_item],[symbol], 
[footprint] FROM [' +  TABLE_NAME + ']  UNION ALL ' 
FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME LIKE 'ENG_Parameters_%'

SELECT @SQL = LEFT(@SQL, LEN(@SQL) - 11)
exec sp_executesql @SQL;