3

SQL Serverを使用していますが、バージョンの年を返すSQLクエリが必要です。

私は次の方法に精通しています:

select @@version

select SERVERPROPERTY('productversion')

しかし、たとえば次を返すクエリが必要です。

2008

また

2005

私が言及した最初のクエリはダーティな解析を必要とし、2番目のクエリはいくつかの製品番号を返します。

誰かがそのようなクエリを知っていますか?

ありがとう!

4

3 に答える 3

11

これを試してください。バージョン番号の最初の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

于 2012-11-11T15:14:19.230 に答える
1

プロパティの最初の番号は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);
于 2012-11-11T14:05:59.167 に答える
0
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
于 2016-04-21T12:19:15.203 に答える