2012-11-11 2 views
3

SQL Server를 사용하고 있으며 버전의 연도를 반환하는 SQL 쿼리가 필요합니다.SQL 버전을 얻기위한 SQL 쿼리

나는 다음 방법을 잘 알고있어 :

select @@version 

select SERVERPROPERTY('productversion') 

하지만, 예를 들어 반환하는 쿼리가 필요합니다

2008 

또는

2005 

첫 번째 쿼리 I를 언급 한 더러운 구문 분석 및 두 번째 일부 제품 번호를 반환합니다.

누구나 그러한 쿼리를 알고 있습니까?

감사합니다.

+2

2008 R2에 대한 반환해야합니까 년 ? –

+0

2008R2에 대해 반환해야하는 연도는 2008 년입니다 – KernelMode

+1

(@String, CharIndex ('2', @@ Version), 4) int 형식으로 캐스트를 선택하십시오. – bummi

답변

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 

, 당신은 확인하기 위해 사용자 정의 함수에이를 패키징 할 수 그것은 "예뻐"

+0

감사합니다. 그것은 더 명확하게 보입니다. – KernelMode

1

재산 SERVERPROPERTY('productversion')의 첫 번째 숫자는 주 버전 번호이기 때문에 :

major.minor.build.revision

그런 다음 각을 포함하는 임시 테이블을 만들 수는 에디션 주 버전 번호와 그 해. 그럼 당신은 folowing 쿼리로 끝날 것

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); 
+0

또한 : 8 = SQL Server 2000, 11 = SQL Server 2012 –

+0

감사! 나는 그것을 사용할 것이다. 전공과 연도 버전은 어디에서 찾을 수 있습니까? – KernelMode

+0

@kernelMode - 내가 봤어. 다음은 [** SQL Server Versions **] (http://social.technet.microsoft.com/wiki/contents/articles/783.sql-server-versions.aspx)와 같은 페이지입니다. 그러나 당신이 처음 두 숫자 인 전공을 찾고 있음을 주목하십시오. –

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