2017-04-12 2 views
0

Ich habe Microsoft SQL Server 2014 Express. Ich habe Datenbanken Jahr genannt und eine „ID“, zum Beispiel:Automatisches Füllen der Datenbank Name auf Abfrage

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

Und ich habe eine Abfrage zu tun, die im letzten Jahr mit „CB“ erfaßt, so dass:

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

Sowieso? Die Jahre sind höher als 2000 und niedriger als 2100.

Danke !!

+0

Nicht sicher, ich bekomme die Frage richtig, aber würde so etwas wie die folgende Arbeit nicht? TOP 1 name FROM master.dbo.sysdatabases WHERE name LIKE '% CB%' ORDER BY Name Desc SELECT ' – SchmitzIT

+0

Sie könnten besser dran mit Anwendungscode (.net, PHP, Coldfusion, etc.) erhalten die Name Ihrer Datenbank In ColdFusion wäre es beispielsweise "Jahr (jetzt()) - 1 &" CB " –

Antwort

2

Wenn Sie nur den Namen der Datenbank erhalten möchten, können Sie so etwas wie folgt verwenden:

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

Sie diese einer Variablen zuweisen konnte, und dann diese Variable in die Entwicklung dynamischer SQL, wenn Sie es wünschen.

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