查询时自动填充数据库名称

时间:2017-04-12 17:11:23

标签: sql sql-server

我有Microsoft SQL Server 2014 express。 我有按年份命名的数据库和" ID",例如:

2010CB
2010PL
2011CB
2011YK
2012CB
2013CB
...
20NNCB

我必须使用" CB"进行检测去年的查询,以便:

SELECT * FROM [20NNCB][.DBO].FIELD; --being NN the higher year.

任何方式?这些年份高于2000年,低于2100年。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您只想获取数据库名称,可以使用以下内容:

SELECT TOP 1 name
  FROM sys.databases
 WHERE name LIKE '%CB'
 ORDER BY name DESC

您可以将其分配给变量,然后根据需要使用该变量构建动态SQL。

DECLARE @dbName sysname;
DECLARE @sql nvarchar(max);

SELECT TOP 1 @dbName = name
  FROM sys.databases
 WHERE name LIKE '%CB'
 ORDER BY name DESC

SELECT @sql = 'SELECT * FROM ' + QUOTENAME(@dbName) + '.[DBO].[TABLENAME];'
EXEC (@sql);