Подстрока Регулярное выражение для вхождения - PullRequest
0 голосов
/ 31 мая 2019

Я хочу выбрать часть строки, которая появляется после первого подчеркивания _ и перед вторым, третьим или любым другим количеством подчеркивания _ в строке.

Например, у меня есть строки, такие как:

75618_LORIK1_2_BABA_ODD_GENERIC
19_GENTRIT3_CC_DD_FF_BROWSERTC
75618_BETIM2

Вывод должен быть:

LORIK1
GENTRIT3
BETIM2

Я не могу найти какое-то выражение подстроки, чтобы получить эту часть, я попытался использовать:

SELECT SUBSTR(COLNAME, 0, INSTR(COLNAME, '_')-1) FROM DUAL;

Но, похоже, он получает только часть до первого появления '_'.

1 Ответ

3 голосов
/ 31 мая 2019

Вот один из способов сделать это с помощью регулярных выражений.

with
  test_data (str) as (
    select '75618_LORIK1_2_BABA_ODD_GENERIC' from dual union all
    select '19_GENTRIT3_CC_DD_FF_BROWSERTC'  from dual union all
    select '75618_BETIM2'                    from dual union all
    select 'NO UNDERLINES HERE'              from dual
  )
select str, regexp_substr(str, '[^_]*', 1, 3) as second_token
from   test_data
;

STR                             SECOND_TOKEN                   
------------------------------- -------------------------------
75618_LORIK1_2_BABA_ODD_GENERIC LORIK1                         
19_GENTRIT3_CC_DD_FF_BROWSERTC  GENTRIT3                       
75618_BETIM2                    BETIM2                         
NO UNDERLINES HERE 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...