Trzeci parametr funkcji REGEXP_SUBSTR wskazuje pozycję w ciągu docelowym (de_desc
w twoim przykładzie), w którym chcesz rozpocząć wyszukiwanie. Zakładając, że znaleziono dopasowanie w danej części łańcucha, nie ma to wpływu na to, co jest zwracane.
W Oracle 11g istnieje szósty parametr funkcji, który, jak sądzę, jest tym, co próbujesz użyć, który wskazuje grupę przechwytywania, która ma zostać zwrócona. Przykładem prawidłowego użytkowania byłoby:
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;
Jeżeli ostatni parametr 1
podać numer grupy przechwytującej chcesz zwrócone.
10g nie wydaje się mieć tę opcję, ale w twoim przypadku można osiągnąć ten sam rezultat z:
select substr(match, 2, length(match)-2) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);
ponieważ wiesz, że mecz będzie miał dokładnie jeden nadmiar znaków na początku i na końcu. (Alternatywnie, możesz użyć RTRIM i LTRIM, aby usunąć nawiasy z obu końcówek wyniku.)
Co zadziwiające jest to, że 6-cie parametr nie jest wymienione w oficjalnej dokumentacji REGEXP_SUBSTR Oracle. Dzięki za wskazanie, że istnieje. –