SQL Serverを使用していますが、バージョンの年を返すSQLクエリが必要です。
私は次の方法に精通しています:
select @@version
select SERVERPROPERTY('productversion')
しかし、たとえば次を返すクエリが必要です。
2008
また
2005
私が言及した最初のクエリはダーティな解析を必要とし、2番目のクエリはいくつかの製品番号を返します。
誰かがそのようなクエリを知っていますか?
ありがとう!
SQL Serverを使用していますが、バージョンの年を返すSQLクエリが必要です。
私は次の方法に精通しています:
select @@version
select SERVERPROPERTY('productversion')
しかし、たとえば次を返すクエリが必要です。
2008
また
2005
私が言及した最初のクエリはダーティな解析を必要とし、2番目のクエリはいくつかの製品番号を返します。
誰かがそのようなクエリを知っていますか?
ありがとう!
これを試してください。バージョン番号の最初の2文字を調べて、SQLServerバージョンに対応する「年」を返します。
SELECT
'SQL Server Year ' +
CASE SUBSTRING(CONVERT(VARCHAR(50), SERVERPROPERTY('productversion')), 1, 2)
WHEN '8.' THEN '2000'
WHEN '9.' THEN '2005'
WHEN '10' THEN '2008'
WHEN '11' THEN '2012'
WHEN '12' THEN '2014'
WHEN '13' THEN '2016'
WHEN '14' THEN '2017'
WHEN '15' THEN '2019'
END
もちろん、これをユーザー定義関数にパッケージ化して、「よりきれい」にすることができます。
ソース:MSDN
プロパティの最初の番号はSERVERPROPERTY('productversion')
メジャーバージョン番号であるため、次のようになります。
major.minor.build.revision
次に、各エディションのメジャーバージョン番号とその年を含む一時テーブルを作成できます。次に、次のクエリが表示されます。
DECLARE @productversion VARCHAR(100);
SELECT @productversion = CAST(SERVERPROPERTY('productversion') AS VARCHAR(100));
SELECT years.year, years.name
FROM
(
VALUES(9, '2005', 'SQL Server 2005'),
(10, '2008', 'SQL Server 2008 OR SQL Server 2008 R2'),
...
) AS years(majornumber, [year], name)
WHERE years.majornumber = LEFT(@productversion,
CHARINDEX('.', @productversion , 1) - 1);
SELECT 'SQL Server ' +
CASE CAST(SERVERPROPERTY('productversion') AS CHAR(2))
WHEN '8.' THEN '2000'
WHEN '9.' THEN '2005'
WHEN '10' THEN '2008/2008R2'
WHEN '11' THEN '2012'
WHEN '12' THEN '2014'
WHEN '13' THEN '2016'
END
出力-
----------------------
SQL Server 2016