構文

用途
REGEXP_COUNTは、ソース文字列でパターンが発生した回数を戻すことによって、REGEXP_INSTRファンクションの機能を補完します。このファンクションでは、入力キャラクタ・セットによって定義された文字を使用して文字列を評価します。また、patternの発生回数を示す整数を戻します。一致する値が見つからない場合は0(ゼロ)を戻します。
source_charは、検索値として使用される文字式です。通常は文字列であり、データ型はCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBのいずれかです。
patternは正規表現です。通常はテキスト・リテラルであり、データ型はCHAR、VARCHAR2、NCHARまたはNVARCHAR2のいずれかになります。ここには、 512バイトまで入力できます。patternのデータ型がsource_charのデータ型と異なる場合、Oracleはpatternをsource_charのデータ型に変換します。
REGEXP_COUNTは、pattern内の部分正規表現のカッコを無視します。たとえば、パターン'(123(45))'は、'12345'と同じです。patternで指定できる演算子のリストは、付録D「Oracleの正規表現のサポート」を参照してください。
positionは、Oracleが検索を開始する文字source_charの位置を示す正の整数です。デフォルトは1で、source_charの最初の文字から検索が開始されます。1番目のpatternの出現が検出されると、その後に続く文字以降の2番目の出現が検索されます。
match_paramは、ファンクションのデフォルトの検索動作を変更するためのテキスト・リテラルです。match_paramには次の値を1つ以上指定できます。
'i': 大/小文字を区別せずに検索します。
'c': 大/小文字を区別して検索します。
'n': 任意の文字に一致する文字であるピリオド(.)を、改行文字の一致に使用します。このパラメータを指定しない場合、ピリオドは改行文字には一致しません。
'm': ソース文字列を複数行として処理します。Oracleは、キャレット(^)およびドル記号($)を、それぞれ、ソース文字列全体の開始または終了としてのみではなく、ソース文字列内の任意の場所にある任意の行の開始または終了としても解釈します。このパラメータを指定しない場合、Oracleはソース文字列を単一行として処理します。
'x'は空白文字を無視します。デフォルトでは、空白文字は空白文字として一致します。
複数の矛盾する値を指定すると、最後の値が使用されます。たとえば、'ic'を指定すると、大/小文字を区別する検索が行われます。前述以外の文字を指定すると、エラーが戻されます。
match_paramを指定しない場合、次のようになります。
大/小文字を区別するかどうかのデフォルトは、NLS_SORTパラメータの値によって決まります。
ピリオド(.)は改行文字に一致しません。
ソース文字列は単一行として処理されます。
例
次の例では、pattern内の部分正規表現のカッコが無視されることを示します。
SELECT REGEXP_COUNT('123123123123123', '(12)3', 1, 'i') REGEXP_COUNT
FROM DUAL;
REGEXP_COUNT
------------
5
次の例では、ファンクションは3番目の文字でソース文字列の評価を開始するため、patternの最初の出現はスキップされます。
SELECT REGEXP_COUNT('123123123123', '123', 3, 'i') COUNT FROM DUAL;
COUNT
----------
3