wyciąganie środka tekstu o różnej długości ORACLE

0

cześć
Mam kolumnę w której znajdują się wartości np. '221111-43434343-2223', '221-6534-232324234' itp. Chcę wyciągnąć tylko tekst pomiędzy myślnikami ale trudność polega na tym że jest on różnej długości czyli że przez myślnikiem może być arówno 5 cyfr jak i jedna cyfra i tak samo na końcu. Z góry dzięki

pozdrawiam

0

Poczytaj o ltrim i length. :)

0

Może zwykły regexp_substr + ucięcie minusa?

 select replace(regexp_substr('221111-43434343-2223','[0-9]+-',1,2),'-','') from dual
 union all 
 select replace(regexp_substr('221-6534-232324234' ,'[0-9]+-',1,2),'-','') from dual;
0
select trim(regexp_substr('221111-43434343-2223', '[0-9]+', 1, LEVEL)) from dual 
CONNECT BY instr('221111-43434343-2223', '-', 1, LEVEL - 1) > 0
0

Użyj kombinacji instr i substr. Instr szukaj kolejne wystąpienia separatora, tzn. myślnika a substr wybieraj wartość od jednego do kolejnego myślnika.

0

DEFINE str = ( '221111-43434343-2223' )
SELECT
substr(&str,instr(&str,'-') + 1, (instr(&str,'-',-1) - (instr(&str,'-') + 1) ) )
FROM
dual;

0

I ja dołożę coś od siebie, poczytaj o wyrażeniach regularnych regexp :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1