有没有一种方法可以根据 table 模式的查询创建多个 table 的 SQL 视图?

Is there a way I create a SQL view of multiple tables based on a query of the table schema?

我有一个 SQL 数据库,其中有多个 table 由其他人维护,我想联合起来创建一个视图。问题是 table 的数量还在不断增加!列和字符长度相同。

我可以使用

创建 table 的列表
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'Table%'.

目前我有一个联合所有查询,如下所示

SELECT * FROM table1
UNION ALL
SELECT * FROM table2;

但是 table 名单还在不断增加。有什么我可以创建一些东西来循环思考 tables 吗?像

*SELECT * FROM (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'Table%') UNION ALL*

我知道这行不通,但我希望有一些技巧可以让我一路走下去!如果有帮助,这是在 SQL Server 2012 上。

谢谢

declare @s nvarchar(max);
set @s=''

select 
 @s=@s +'(select * from [' + s.name + '])'+
    case when ROW_NUMBER() over (order by s.name) != count(*) over () 
    then 
    ' UNION ALL ' 
    else 
    ''
    end
from
sys.tables as s
where s.name like 't%'

print @s;

还有一点要考虑,你需要确保字段计数是相同的手之前也是为了安全起见,最好避免 select * 并使用字段名称你需要的。这应该在存储过程中生成 SQL 到 运行 的语句,如评论中所述。花一些时间来解决这个错误,并如前所述对字段名称的连续性进行必要的检查。