使用 regexp_substr 获得第二次出现

Get second occurrence with regexp_substr

我无法使 sqlfiddle 工作,所以这是我的简单代码:

select REGEXP_SUBSTR(' EG SUZ SG SIN blabla ', '^(\s?[A-Z]{2} [A-Z]{3}\s?){2}') from dual;

我想得到SG SIN。我知道 REGEXP_SUBSTR 有一个参数用于第 n 次出现但是当我写

select REGEXP_SUBSTR(' EG SUZ SG SIN blabla ', '^(\s?[A-Z]{2} [A-Z]{3}\s?){2}'),1,2) from dual;

它 returns 什么都没有 1,1 returns EG SUZ SG SIN 所以我的猜测是事件没有正确拆分,但我不知道为什么,你能解释一下?

这会起作用

select REGEXP_SUBSTR(' EG SUZ SG SIN blabla ', '([A-Z]{2} [A-Z]{3}(\s|$))', 1, 2) from dual;