Я пытаюсь найти эквивалент для 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