SQL Server数据提取
问题描述:
我做的SQL Server的安全性无序排列的自动化和我需要从@@version
SQL 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)
我需要提取信息提取安全公告版(KB3171021)从上面输出。
这是我试过
DECLARE @version NVARCHAR(400)
SELECT @version = REVERSE(SUBSTRING(@@version, 0, 50))
SELECT @version
SELECT SUBSTRING(@version, (CHARINDEX('(', REVERSE(@@VERSION))),(CHARINDEX(')', REVERSE(@@VERSION))))
我没有得到期望的输出。你能帮忙吗?
答
那么,正如我在评论中的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
试试[这个答案](https://stackoverflow.com/a/59457),你需要改变参数 –
[@@版本可能根本不包含它...](http://rextester.com/CCDBE39117) –
的确,我正在获得'Microsoft SQL Server 2012(SP1) - ...' – Veljko89