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

Sql 查询时自动填充数据库名称,sql,sql-server,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年 谢谢 如果您只想获取数据库名称,可以使用如下

我有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年


谢谢

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

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);

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

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);

我不确定我的问题是否正确,但我不想做下面的工作吗从master.dbo.sysdatabases中选择前1个名称,其中的名称如“%CB%”按名称排序Desc`您最好使用应用程序代码(.net、php、coldfusion等)来获取数据库的名称。例如,在ColdFusion中,它将是
year(now())-1&“CB”
不确定我的问题是否正确,但是否会像下面的工作一样从master.dbo.sysdatabases中选择前1个名称,其中的名称如“%CB%”按名称排序Desc`您最好使用应用程序代码(.net、php、coldfusion等)来获取数据库的名称。例如,在ColdFusion中,它将是
year(now())-1&“CB”