Třetí parametr funkce REGEXP_SUBSTR označuje pozici v cílovém řetězci (de_desc
ve vašem příkladu), kde chcete začít hledat. Za předpokladu, že je v dané části řetězce nalezena shoda, neovlivní to, co se vrátí.
V Oracle 11g existuje šestý parametr funkce, o kterém si myslím, že se pokoušíte použít, což označuje skupinu zachycení, kterou chcete vrátit. Příkladem správného použití by bylo:
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;
Kde je poslední parametr 1
uveďte číslo zachycené skupiny, kterou chcete vrátit. Zde je odkaz na dokumentaci popisující parametr.
Zdá se, že 10g tuto možnost nemá, ale ve vašem případě můžete stejného výsledku dosáhnout pomocí:
select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);
protože víte, že zápas bude mít na začátku a na konci přesně jeden přebytečný znak. (Alternativně můžete použít RTRIM a LTRIM k odstranění závorek z obou konců výsledku.)