Эквивалентность REGEXP_INSTR в SQL Server - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь найти эквивалент для REGEXP_INSTR (Oracle), чтобы найти n-е вхождение шаблона. В настоящее время Patindex находит только первое вхождение. Мне нужно найти второе вхождение шаблона «% [* - /] $» в строке «11111-2222-3333-44» или «11111 *2222* 3333 * 44» или «11111/2222/3333/44».

Окончательный результат будет: 1111-3333-44

declare @itemcode varchar(50)  ='11111-2222-3333-44'  
declare @regex varchar(10)='%[/*-]%'  
select   
CASE  
      WHEN PATINDEX(@regex,@itemcode)<=0 THEN NULL  
      ELSE   CASE  
             WHEN   PATINDEX(@regex,SUBSTRING(@itemcode,PATINDEX(@regex,@itemcode)+1,100))<=0 THEN NULL  
             ELSE   SUBSTRING(SUBSTRING(@itemcode,PATINDEX(@regex,@itemcode)+1,100),PATINDEX(@regex,SUBSTRING(@itemcode,PATINDEX(@regex,@itemcode)+1,100))+1,100)  
           END  
    END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...