从'%_BT'.dbo.Version中选择*

问题描述 投票:0回答:1

我有一个用于管理产品版本的云产品的SQL Server 2008数据库实例。

我们格式化的用途是

customername_bt
customername_bs

其中[_bt]是产品1,[_bs]是产品2.我意识到我可以硬编码然后联合一个这样的查询;

select * from cust1_bt.dbo.version union
select * from cust1_bs.dbo.version union
select * from cust2_bt.dbo.version union
select * from cust2_bs.dbo.version

但是,每次添加新客户时,我都必须重新查看添加了人为错误元素的查询,因此,我想知道是否可以通过另一种方式实现此结果。

显然这不是一件事,但希望它能推动我希望实现的目标

select * from '%_bt'.dbo.Version UNION
select * from '%_bs'.dbo.Version

提前致谢

sql-server-2008
1个回答
0
投票

你可以使用动态sql

DECLARE @SQLText VARCHAR(MAX) =''

select @SQLText  = @SQLText  + 'UNION select * from ' + QUOTENAME(name) + '.dbo.Version ' 
from sys.databases WHERE 
   name like '%[_]bt' 
   or name like '%[_]bs' 

SET @SQLText = STUFF(@SQLText,1,6,'')

EXEC @SQLText
© www.soinside.com 2019 - 2024. All rights reserved.