查看名称如 '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;
我正在尝试创建一个将加载列的 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;