SQL查询获取sql年版本

时间:2012-11-11 13:39:23

标签: sql sql-server version

我正在使用SQL Server,我需要一个返回版本年份的SQL查询。

我熟悉下一个方法:

select @@version

select SERVERPROPERTY('productversion')

但我需要一个将返回的查询,例如:

2008

2005

我提到的第一个查询需要脏解析,第二个返回一些产品编号。

有谁知道这样的查询?

谢谢!

3 个答案:

答案 0 :(得分:10)

试试这个 - 它只是检查版本号的前两个字符,并返回SQL Server版本的相应“年份”。

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'
    END

当然,您可以将其打包成用户定义的函数,使其“更漂亮”

答案 1 :(得分: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);

答案 2 :(得分: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