REGEXP_SUBSTRを使用して、Oracleで必要なこれらのデータを取得する方法
SPRINTMVNO_PM_CDR_IWIRELESS_20121110_0813.csv get '08'in last four digits
RK_IPDR_RKMSG2_0043722_DT_20121113162710.txt get '0043722' in the middle(between'_')
wireless_201211120015_201211120515 get '0515' (last four digits)
何度も試しましたが、一部の式はPHPまたは他の言語では正常に機能しますが、ORACLEでは機能しません。構文が違うかもしれません。
例: /(?<=_)[0-9]*(?=_)/
phpで数値を取得するために使用できる2番目のものですが、これはOracleでは機能しません。
私は試した
SELECT REGEXP_SUBSTR('RK_IPDR_RKMSG2_0043722_DT_20121113162710.txt','(?<=_)[0-9]*(?=_)')
FROM dual;
出力なし。したがって、2つのスラッシュラインの問題ではありません
この質問の別の定式化は、「Oracleの正規表現を使用して、文字間でコンテンツを取得する方法、または文字で開始するが、文字を含めない方法」です。
文字列関数を使用してこれらのデータを簡単に取得できることはわかっています。問題は、処理する文字列がたくさんあり、それぞれが取得するデータが異なることです。したがって、パターンをデータベースに保存し、1つのregexp_substrを使用してすべてのデータを取得したいと思います。それ以外の場合は、これらのルールをハードコーディングする必要があります。