2017-09-04 13 views
0

私は、SQL Serverのセキュリティ箇条書きの自動化をやっていると私は情報(KB3171021)を抽出する必要が@@versionSQL Serverのデータ抽出

select @@version 

出力

Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) 
Jun 17 2016 19:14:09 
Copyright (c) Microsoft Corporation 
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600:) (Hypervisor) 

からセキュリティ情報のバージョンを抽出する必要があります上の出力から。

これは私が所望の出力を得ていないのです

DECLARE @version NVARCHAR(400) 

SELECT @version = REVERSE(SUBSTRING(@@version, 0, 50)) 

SELECT @version 

SELECT SUBSTRING(@version, (CHARINDEX('(', REVERSE(@@VERSION))),(CHARINDEX(')', REVERSE(@@VERSION)))) 

を試みたものです。あなたは助けてもらえますか?

+0

[この回答](https://stackoverflow.com/a/59457)を試してみると、パラメータを変更する必要があります –

+1

[@バージョンにはまったく含まれていない可能性があります](http://rextester.com/CCDBE39117) –

+0

「Microsoft SQL Server 2012(SP1) - ...」と表示されています。 – Veljko89

答えて

1

私のコメントでrextesterへのリンクに示されているように、@@versionには、探しているデータが含まれていない可能性があります。

あなたはまた、あなたのシステムは、常にそれが含まれている場合、それを抽出するための最も簡単な方法は、第二括弧内のデータを取得するだろう、しかしSERVERPROPERTY

をチェックアウトする場合があります:

;WITH CTE AS 
(
    SELECT CHARINDEX('(', @@Version, CHARINDEX('(', @@Version) + 1) As SecondOpen, 
      CHARINDEX(')', @@Version, CHARINDEX(')', @@Version) + 1) As SecondClose 
) 

SELECT SUBSTRING(@@Version, SecondOpen + 1, SecondClose - SecondOpen - 1) 
FROM CTE 

結果:

KB3171021 

You can see a live demo on rextester.

+0

はい、このSELECTを使用しているときは@@ Version As Original CHARINDEX( '('、@、Version、CHARINDEX( '('、@@ Version)+1) ( '、@@ Version)+1) - CHARINDEX(') '、@@ Version、CHARINDEX(') '、@@ Version))+1)-1)KBとして、 @@ Version As ActualVersion私の結果は、私は1つのクエリですべてを組み合わせた – deepti

+0

それは働いてくれてありがとう – deepti

関連する問題