すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:正規関数

最終更新日:Mar 28, 2026

AnalyticDB for MySQL は、SQL クエリでのパターンマッチング、抽出、置換のために、次の正規表現関数をサポートしています。

前提条件

開始する前に、以下を確認してください。

  • AnalyticDB for MySQL クラスターのマイナーエンジンバージョンが 3.1.5.10 以降であること

説明

マイナーエンジンバージョンを確認するには、「AnalyticDB for MySQL クラスターのバージョンを表示するにはどうすればよいですか?」をご参照ください。

REGEXP_INSTR

regexp_instr(source, pattern[, position[, occurrence[, option]]])

source 内の最初の(または N 番目の)部分文字列の開始位置または終了位置を示す整数を返します。pattern と一致する部分文字列が見つからない場合は、0 を返します。

パラメーター

必須:

パラメーター説明
sourceVARCHAR検索対象の文字列。
pattern照合する正規表現。

オプション:

パラメーターデフォルト説明
positionBIGINT1sourceソース内でマッチングを開始する文字位置。
occurrenceBIGINT1返す一致の発生回数。
optionBIGINT001一致の開始位置 (0) を返すか、一致の終了直後の位置 (1) を返すかを制御します。

戻り値

BIGINT を返します。一致が見つからない場合は 0 を返します。

最初の一致の開始位置を返します

SELECT REGEXP_INSTR('dog cat dog', 'dog') as res;
+-----+
| res |
+-----+
|   1 |
+-----+

2 番目の一致の開始位置を返します

SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 2) as res;
+-----+
| res |
+-----+
|   9 |
+-----+

最初の一致の終了後の位置を返します

SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 1, 1) as res;
+-----+
| res |
+-----+
|   4 |
+-----+

REGEXP_MATCHES

regexp_matches(source, pattern[, flag])

ARRAY(ARRAY(VARCHAR)) を返します。これは、source 内の pattern と一致するすべての部分文字列から構成されます。一致するものが見つからない場合は、Empty 配列を返します。

  • g フラグがない場合: 最初の一致のみを返します。

  • g フラグがある場合: すべての一致を返します。

  • pattern にキャプチャグループが含まれている場合、各グループの一致した部分文字列がネストされた配列として返されます。それ以外の場合、完全一致が返されます。

説明

配列ではなく一致する単一の文字列を取得するには、代わりに REGEXP_SUBSTR を使用します。

パラメーター

必須パラメーター:

パラメーター説明
sourceVARCHAR検索対象の文字列。
pattern照合対象の正規表現。

任意パラメーター:

パラメーター説明
flagVARCHARマッチング動作を制御する 1 文字以上からなるフラグ。最初の 1 件ではなくすべての一致を返すには、g を使用します。

戻り値

ARRAY(ARRAY(VARCHAR)) を返します。一致するデータが見つからない場合は、空の配列を返します。

キャプチャグループとのマッチ (最初の一致のみ)

SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');
+---------------------+
| regexp_matches      |
+---------------------+
| [["bar","beque"]]   |

キャプチャグループなしのマッチ

SELECT regexp_matches('foobarbequebaz', 'barbeque');
+---------------------+
| regexp_matches      |
+---------------------+
| [["barbeque"]]      |

`g` フラグを使用したすべての出現箇所とのマッチ

SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g');
+------------------------------------------+
| regexp_matches                           |
+------------------------------------------+
| [["bar","beque"], ["bazil","barf"]]      |

REGEXP_REPLACE

regexp_replace(source, pattern, replacement[, position[, occurrence]])

source」内の「pattern」と一致する部分文字列を、「replacement」で置き換えます。デフォルトでは、先頭の文字から開始してすべての一致を置き換えます。一致が見つからない場合は、元の文字列を返します。

パラメーター

必須:

パラメーター説明
sourceVARCHAR検索対象の文字列。
pattern照合する正規表現。
replacementVARCHAR各一致に代入する文字列。

オプション:

パラメーターデフォルト説明
positionBIGINT1sourceソース内でマッチングを開始する文字位置。
occurrenceBIGINT0置換する発生回数。0 はすべての一致を置換します。正の整数はその発生のみを置換します。

戻り値

VARCHAR を返します。一致が見つからない場合は元の文字列を返します。

すべての一致を置換します

SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X') as res;
+-------+
| res   |
+-------+
| X X X |
+-------+

3 番目の一致のみを置換します

SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) as res;
+-----------+
| res       |
+-----------+
| abc def X |
+-----------+

REGEXP_SUBSTR

regexp_substr(source, pattern[, position[, occurrence]])

source 内の pattern と一致する部分文字列を返します。一致するものが見つからない場合は、NULL を返します。

パラメーター

必須:

パラメーター説明
sourceVARCHAR検索対象の文字列。
pattern照合する正規表現。

オプション:

パラメーターデフォルト説明
positionBIGINT1sourceソース内でマッチングを開始する文字位置。
occurrenceBIGINT1マッチの何番目を返すか。

戻り値

VARCHAR を返します。一致が見つからない場合は NULL を返します。

3 番目の一致を返します

SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) as res;
+------+
| res  |
+------+
| ghi  |
+------+

最初の一致を返します (デフォルト動作)

SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+') as res;
+------+
| res  |
+------+
| abc  |
+------+