对某些数据库名的SQL查询



我目前在一台服务器上有许多数据库。我想只对以"AccountsLive"结尾的数据库运行查询。

并不是所有的都以这个结尾,所以我想使用通配符%AccountsLive查询而不使用WHERE NOT name IN('master', 'tempdb', 'model', 'msdb')

这可能吗?

下面是我目前的代码:

DECLARE @Sql NVARCHAR(MAX) = NULL;
SELECT  @Sql = COALESCE(@Sql + ' UNION ALL ' + CHAR(13) + CHAR(10), '' ) + 'SELECT * FROM ' + QUOTENAME([name]) + '.SL_TRANSACTIONS'
FROM    sys.databases
WHERE   not [name] in ('master', 'tempdb', 'model', 'msdb');

EXECUTE ( @Sql );

您可以将表名列表放在表变量中并相应地查询它们。我还将模式添加为dbo,以使名称成为三部分名称,假设表在dbo模式中。

DECLARE @table table(dbname sysname)
INSERT INTO @table(dbname)
SELECT NAME FROm sys.databases where name like '%AccountsLive'
DECLARE @Sql NVARCHAR(MAX) = NULL;
SELECT  @Sql = COALESCE(@Sql + ' UNION ALL ' + CHAR(13) + CHAR(10), '' ) + 'SELECT * FROM ' + QUOTENAME(dbname) + '.dbo.SL_TRANSACTIONS'
FROM    @table

EXEC( @Sql );

相关内容

  • 没有找到相关文章

最新更新