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

PolarDB:REGEXP_SUBSTR

最終更新日:Mar 29, 2026

REGEXP_SUBSTR 関数は、POSIX 正規表現で指定されたパターンに一致する部分文字列を文字列内で検索し、該当する部分文字列を返します。

構文

TEXT REGEXP_SUBSTR
(
  srcstr        TEXT,
  pattern       TEXT,
  position      INT  DEFAULT 1,
  occurrence    INT  DEFAULT 1,
  modifier      TEXT DEFAULT NULL,
  subexpression INT  DEFAULT 0
)

パラメーター

パラメーター説明
srcstr検索対象の文字列です。
pattern照合対象となる POSIX 正規表現です。
positionsrcstr 内の検索開始位置(文字単位)です。デフォルト値は 1(文字列の先頭)です。
occurrenceパターンが複数回出現する場合に、何番目の一致結果を返すかを指定します。デフォルト値は 1(最初の一致)です。
modifierパターン照合動作を制御するフラグです。デフォルト値は NULL です。サポートされる値については、「PostgreSQL コアドキュメント」をご参照ください。
subexpressionパターン内のどの括弧で囲まれたグループ(サブ式)を返すかを識別します。デフォルト値は 0(完全一致全体)です。サブ式は、開き括弧「」が出現する順に番号付けされます。たとえば、subexpression => 2 を指定すると、パターン内における 2 番目の (…)サブ式 グループでキャプチャされたテキストが返されます。このパラメーターに値を指定する場合は、検索対象の値の一部を分離するために、パターン内に 1 つ以上の括弧のセットを含める必要があります。

発生順序による部分文字列の抽出

以下の例では、電話番号の文字列から連続する 3 桁の数字のグループを検索します。

最初の一致を返す場合(occurrence => 1):

polardb=# SELECT REGEXP_SUBSTR('800-555-****', '[0-9][0-9][0-9]', 1, 1) FROM DUAL;
 regexp_substr
---------------
 800
(1 row)

2 番目の一致を返す場合(occurrence => 2):

polardb=# SELECT REGEXP_SUBSTR('800-555-****', '[0-9][0-9][0-9]', 1, 2) FROM DUAL;
 regexp_substr
---------------
 555
(1 row)