REGEXP_SUBSTR関数の3番目のパラメーターは、ターゲット文字列(de_desc
)内の位置を示します。 あなたの例では)検索を開始したい場所。文字列の特定の部分で一致が見つかったとすると、返される内容には影響しません。
Oracle 11gには、関数に6番目のパラメータがあります。これは、使用しようとしているものであり、返されるキャプチャグループを示します。適切な使用例は次のとおりです。
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;
最後のパラメータ1
返すキャプチャグループの番号を示します。パラメータを説明するドキュメントへのリンクは次のとおりです。
10gにはこのオプションがないようですが、あなたの場合、次の方法で同じ結果を得ることができます:
select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);
試合の最初と最後に1文字だけ余分な文字があることがわかっているからです。 (または、RTRIMとLTRIMを使用して、結果の両端から角かっこを削除することもできます。)