sql >> データベース >  >> RDS >> Oracle

Oracleの正規表現からグループを抽出するにはどうすればよいですか?

    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を使用して、結果の両端から角かっこを削除することもできます。)



    1. OracleRACでのInMemoryDUPLICATEの混乱

    2. テーブル関数とパイプライン関数の違いは?

    3. UDFおよびCLRを使用せずにT-SQLの文字列からすべての空白文字を削除する良い方法は何ですか?

    4. Postgresのテーブルのレコードごとに一意の文字列を生成するにはどうすればよいですか?