説明
この関数は、正規表現のマッチ値がソース文字列内で占める位置を返します。
構文
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