我有一个用于管理产品版本的云产品的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
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