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