- カテゴリ:
REGEXP_COUNT¶
文字列でパターンが発生する回数を返します。
文字列関数(正規表現) もご参照ください。
構文¶
REGEXP_COUNT( <subject> , <pattern> [ , <position> , <parameters> ] )
引数¶
必須:
subject
一致を検索する文字列です。
pattern
一致するパターンです。
パターンの指定に関するガイドラインについては、 文字列関数(正規表現) をご参照ください。
オプション:
position
関数が一致の検索を開始する文字列の先頭からの文字数です。
デフォルト:
1
(一致の検索は左側の最初の文字から始まります)parameters
一致の検索に使用されるパラメーターを指定する1つ以上の文字の文字列です。サポートされている値:
パラメーター
説明
c
大文字と小文字を区別する一致
i
大文字と小文字を区別しない一致
m
複数行モード
e
部分一致を抽出
s
POSIX ワイルドカード文字
.
一致\n
デフォルト:
c
詳細については、 正規表現のパラメーターの指定 をご参照ください。
戻り値¶
NUMBER 型の値を返します。いずれかの引数が NULL の場合は NULL を返します。
使用上の注意¶
正規表現関数については、 一般的な使用上の注意 をご参照ください。
照合順序の詳細¶
Arguments with collation specifications are currently not supported.
例¶
次の例では、単語 was
の出現をカウントします。マッチングは、文字列の1番目の文字から始まります。
SELECT REGEXP_COUNT('It was the best of times, it was the worst of times',
'\\bwas\\b',
1) AS result;
+--------+
| RESULT |
|--------|
| 2 |
+--------+
次の例は、出現の重複を示しています。テーブルを作成してデータを挿入します。
CREATE OR REPLACE TABLE overlap (id NUMBER, a STRING);
INSERT INTO overlap VALUES (1,',abc,def,ghi,jkl,');
INSERT INTO overlap VALUES (2,',abc,,def,,ghi,,jkl,');
SELECT * FROM overlap;
+----+----------------------+
| ID | A |
|----+----------------------|
| 1 | ,abc,def,ghi,jkl, |
| 2 | ,abc,,def,,ghi,,jkl, |
+----+----------------------+
REGEXP_COUNT を使用するクエリを実行して各行で以下のパターンが見つかった回数をカウントします。句読点の後に数字と文字が続き、その後に句読点が続きます。
SELECT id,
REGEXP_COUNT(a,
'[[:punct:]][[:alnum:]]+[[:punct:]]',
1,
'i') AS result
FROM overlap;
+----+--------+
| ID | RESULT |
|----+--------|
| 1 | 2 |
| 2 | 4 |
+----+--------+