2017-04-12 54 views
0

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

謝謝!

+0

不知道我得到的問題是正確的,但不會像以下工作? 'SELECT TOP 1 name FROM master.dbo.sysdatabases WHERE name LIKE'%CB%' ORDER BY name Desc' – SchmitzIT

+0

您可能更適合使用應用程序代碼(.net,php,coldfusion等)來獲取數據庫的名稱。例如,在ColdFusion中,它將是'year(now()) - 1&'CB'' –

回答

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