2017-04-12 9 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年より下です。

ありがとう!!

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

あなたは変数にこれを割り当てることができ、その後、必要に応じて、動的SQLを構築する上でその変数を使用します。あなただけのデータベース名を取得したい場合は

+0

私は正しい質問を得ていますが、次のようなものはありませんか? 'SELECT TOP 1 name FROM master.dbo.sysdatabases WHERE name LIKE '%CB%' ORDER BY名Desc ' – SchmitzIT

+0

アプリケーションコード(.net、php、coldfusionなど)を使用する方がよい場合があります。データベースの名前。たとえば、ColdFusionでは 'year(now()) - 1& 'CB''となります。 –

答えて

2

、あなたはこのようなものを使用することができます。

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); 
関連する問題