説明
この関数は、正規表現によるマッチング結果がソース文字列内でどの位置にあるかを返します。
構文
REGEXP_INSTR (source_char, pattern
[, position[, occurrence[, return_opt[, match_param[, subexpr] ] ] ] ]
)
パラメータの説明
パラメータ |
説明 |
|---|---|
| source_char | サーチ値として使用する文字式を指定します。データ型は CHAR、VARCHAR2、NCHAR、NVARCHAR2、または CLOB が可能です。 |
| pattern | 正規表現の抽出ルールを指定します。通常はテキスト文字であり、文字型は CHAR、VARCHAR2、NCHAR、または NVARCHAR2 が可能です。 |
| position | 正規表現のマッチング開始位置を指定します。値は正の整数で、オプションです。デフォルト値は 1 で、最初の文字から source_char を検索することを意味します。 |
| occurrence | source_char 内の正規表現のマッチ位置を指定します。オプションです。デフォルト値は 1 です。occurrence が 1 より大きい場合、最初のマッチ後の最初の文字から、2 番目の正規表現のマッチを検索し、以降も同様に処理します。 |
| return_opt | マッチした値の位置を返すオプションを指定します。オプションです。デフォルト値は 0 です。
|
| match_param | 正規表現のデフォルトのマッチング方法を変更するために指定します。オプションです。データ型 VARCHAR2 または CHAR の文字式です。
|
| subexpr | pattern が返すサブ式を指定するための、0 から 9 の範囲の非負整数です。オプションです。デフォルト値は 0 で、最初のサブ式が現れる位置を返します。 |
戻り値の型
NUMBER データ型を返します。
例
式 (Oc)(e(anB)(ase)) の4番目のサブ式 anB の最初の文字と最後の文字が文字列 OceanBase 内でどの位置にあるかを返します。
obclient> SELECT REGEXP_INSTR('OceanBase', '(Oc)(e(anB)(ase))',1, 1, 0, 'i', 3) "first",
REGEXP_INSTR('OceanBase', '(Oc)(e(anB)(ase))', 1, 1, 1, 'i', 3)-1 "last"
FROM DUAL;
+-------+------+
| first | last |
+-------+------+
| 4 | 6 |
+-------+------+
1 row in set