我正在使用 SQL Server,我需要一个返回版本年份的 SQL 查询。
我熟悉以下方法:
select @@version
select SERVERPROPERTY('productversion')
但我需要一个将返回的查询,例如:
2008
或者
2005
我提到的第一个查询需要脏解析,第二个返回一些产品编号。
有谁知道这样的查询?
谢谢!
我正在使用 SQL Server,我需要一个返回版本年份的 SQL 查询。
我熟悉以下方法:
select @@version
select SERVERPROPERTY('productversion')
但我需要一个将返回的查询,例如:
2008
或者
2005
我提到的第一个查询需要脏解析,第二个返回一些产品编号。
有谁知道这样的查询?
谢谢!
试试这个 - 它只检查版本号的前两个字符并返回 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'
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