在SQL Server中使用Regex,我无法解决以下问题

时间:2010-01-20 15:58:47

标签: sql sql-server regex tsql

我有这样的字符串

OPEN SYSTEMS SUB GR(GM / BTIB(1111)/ BTITDBL(2222)/ BTVY(4444)/ ACSVTYSAG)

我需要从中提取2222。

我在GROUPS字符串上做了什么:

    SUBSTRING(GROUPS, CHARINDEX('(',GROUPS, CHARINDEX('(',GROUPS, CHARINDEX('(',GROUPS,0)+1)+1)+1, 4 ) AS GroupNo

然而,我发现效率并不高,而且我被告知要使用正则表达式。我无法解决它。我希望有人能帮助我。 感谢。

2 个答案:

答案 0 :(得分:1)

好的,我现在明白你需要从第3个括号开始,然后是4位数?

看看

Declare @Data varchar(8000)

select @Data='OPEN SYSTEMS SUB GR (GM/BTIB(1111)/BTITDBL(2222)/BTVY(4444)/ACSVTYSAG)'

select left(parsename(left(replace(@data,'(','.'),
    len(@data) - PATINDEX('%(%',reverse(@data))),1),4)

答案 1 :(得分:0)

SQL Server本身不支持正则表达式。

但是,您可以使用CLR集成添加可以使用正则表达式的.NET存储过程。请参阅this article以获得更好的解释。