全部產品
Search
文件中心

MaxCompute:REGEXP_CONTAINS

更新時間:Sep 04, 2025

REGEXP_CONTAINS函數用於判斷一個字串是否包含與指定字串或Regex匹配的內容。

命令格式

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

參數說明

  • source:必填。STRING類型。被匹配的字串。

  • pattern:必填。STRING類型常量或Regex。用於匹配的子字串或Regex。更多Regex編寫規範,請參見Regex規範

    說明

    您可以使用^(行首)和$(行尾)搜尋完整匹配項。由於Regex中的運算子存在優先順序,建議使用括弧包裹^$之間的所有內容,以確保匹配邏輯正確。

傳回值說明

返回BOOLEAN類型。返回規則如下:

  • source值包含與pattern匹配的內容,返回true;反之,返回false。

  • sourcepattern為非STRING類型或無效,返回報錯。

  • sourcepattern值為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:使用^(行首)和$(行尾)搜尋完整匹配項。

    由於Regex中的運算子存在優先順序,建議使用括弧包裹^$之間的所有內容,以確保匹配邏輯正確。

    • Regex未使用括弧,不影響結果。

      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                |
      +------------+---------------------+---------------------+
    • Regex未使用括弧,影響輸出結果。

      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:當regexp為空白字串時,返回true。

    --返回true
    WITH dummy AS(SELECT '' AS PATTERN) SELECT REGEXP_CONTAINS('ABC',PATTERN) FROM dummy;

相關函數

REGEXP_CONTAINS函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數