Используя Regex в SQL Server, я не смог решить следующую проблему - PullRequest
2 голосов
/ 20 января 2010

У меня есть такие строки

ОТКРЫТЫЕ СИСТЕМЫ SUB GR (GM / BTIB (1111) / BTITDBL (2222) / BTVY (4444) / ACSVTYSAG)

и мне нужно извлечь 2222 из него.

Что я делал в строке ГРУПП:

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

Однако я вижу, что это не очень эффективно, и мне сказали сделать это с помощью регулярного выражения. Я не мог решить это. Я надеюсь, что кто-нибудь может мне помочь с этим. Благодаря.

Ответы [ 2 ]

1 голос
/ 20 января 2010

Хорошо, теперь я понимаю, что вам нужно каждый, начиная с 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)
0 голосов
/ 20 января 2010

SQL Server изначально не поддерживает регулярные выражения.

Однако вы можете использовать интеграцию CLR для добавления хранимой процедуры .NET, которая может использовать регулярные выражения. См. эту статью для хорошего объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...