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

MaxCompute:REGEXP_CONTAINS

最終更新日:Oct 23, 2025

REGEXP_CONTAINS 関数は、文字列に指定された文字列または正規表現に一致するコンテンツが含まれているかどうかをチェックします。

構文

BOOLEAN REGEXP_CONTAINS(STRING <source>, STRING <pattern>)

パラメーター

  • source: 必須。STRING 型の値。このパラメーターは、検索対象の文字列を指定します。

  • pattern: 必須。STRING 型の定数または正規表現。

    説明

    行頭の ^ と行末の $ を使用して、完全一致を検索します。正規表現のオペレーターには優先順位があるため、^$ の間のすべてのコンテンツを括弧で囲み、照合ロジックが正しいことを確認してください。

戻り値

BOOLEAN 値を返します。次のルールが適用されます:

  • source の値が pattern と一致する場合、関数は `true` を返します。それ以外の場合は `false` を返します。

  • source または pattern が `STRING` でないか、無効な場合、関数はエラーを返します。

  • source または pattern が NULL の場合、関数は NULL を返します。

  • pattern が空の文字列の場合、関数は true を返します。

  • 例 1: メールアドレスを検証します。

    SELECT  'foo@example.com' AS email, REGEXP_CONTAINS('foo@example.com', '@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+') AS is_valid;

    次の結果が返されます:

    +-----------------+----------+
    | email           | is_valid |
    +-----------------+----------+
    | foo@example.com | true     |
    +-----------------+----------+
  • 例 2: 行頭の ^ と行末の $ を使用して、完全一致を検索します。

    正規表現のオペレーターには優先順位があるため、^$ の間のすべてのコンテンツを括弧で囲み、照合ロジックが正しいことを確認してください。

    • 正規表現は、括弧を使用しなくても正しい結果を生成します。

      SELECT
        'a@foo.com' AS email,
        REGEXP_CONTAINS('a@foo.com', '^([\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org)$') AS valid_email_address,
        REGEXP_CONTAINS('a@foo.com', '^[\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org$') AS without_parentheses;

      次の結果が返されます:

      +------------+---------------------+---------------------+
      | email      | valid_email_address | without_parentheses |
      +------------+---------------------+---------------------+
      | a@foo.com  | true                | true                |
      +------------+---------------------+---------------------+
    • 正規表現に括弧がないと、出力に影響します。

      SELECT
        '!b@bar.org' AS email,
        REGEXP_CONTAINS('!b@bar.org', '^([\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org)$') AS valid_email_address,
        REGEXP_CONTAINS('!b@bar.org', '^[\\w.+-]+@foo\\.com|[\\w.+-]+@bar\\.org$') AS without_parentheses;

      次の結果が返されます:

      +------------+---------------------+---------------------+
      | email      | valid_email_address | without_parentheses |
      +------------+---------------------+---------------------+
      | !b@bar.org | false               | true                |
      +------------+---------------------+---------------------+
  • 例 3: パターンとして空の文字列を使用します。

    --true を返します。
    WITH dummy AS(SELECT '' AS PATTERN) SELECT REGEXP_CONTAINS('ABC',PATTERN) FROM dummy;

関連関数

REGEXP_CONTAINS 関数は文字列関数です。文字列の検索または文字列フォーマットの変換を行う関数についての詳細については、「文字列関数」をご参照ください。