regexp_substr函式

適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 11.3 LTS 和更新版本

傳回 str 中符合 regexp 的第一個子字串。

語法

regexp_substr( str, regexp )

引數

  • str STRING:要比對的表達式。
  • regexp STRING:具有相符模式的表達式。

傳回

STRING。

regexp_substr 回傳整個匹配的 regexp 子串,而非單一捕獲群組。 要返回特定的捕獲群,請使用 regexp_extract。 僅考慮第一場比賽。 要退回每場比賽,請使用 regexp_extract_all。

字 regexp 串必須是正則表達式。 請參見 「正則表達式 」以了解所支援的語法。

使用常值時,請使用 raw-literal (r prefix) 以避免逸出字元前置處理。

若 str 或 regexp 為 NULL,或找不到該模式,則結果為 NULL。

常見錯誤條件

範例

選擇多個選項之一

該模式Ste(v\|ph)en與 或 之一相符StephenSteven。 函式回傳第一個匹配。

> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', r'Ste(v|ph)en');
 Steven

從字串中提取第一個數字

使用原始字面值,這樣 \d 就能傳給正則表達式引擎,且不會重複反斜線。

> SELECT regexp_substr('item 42 costs $19', r'\d+');
 42

不敏感地匹配

使用 (?i) 內聯旗標來忽略大寫。

> SELECT regexp_substr('Error: disk full', r'(?i)error');
 Error

擷取電子郵件地址

> SELECT regexp_substr('Contact alice@example.com for details', r'\w+@\w+\.\w+');
 alice@example.com

擷取第一個標籤

regexp_substr 僅回傳第一場比賽。 要退回每場比賽,請使用 regexp_extract_all。

> SELECT regexp_substr('Posts tagged #data #ai #sql', r'#\w+');
 #data

無匹配回傳 NULL

與 regexp_extract 不同, 回傳空字串, regexp_substr 當找不到該模式時會回傳 NULL 。

> SELECT regexp_substr('Mary had a little lamb', r'Ste(v|ph)en');
 NULL

NULL 輸入回傳 NULL

> SELECT regexp_substr(NULL, r'Ste(v|ph)en');
 NULL

> SELECT regexp_substr('Mary had a little lamb', NULL);
 NULL

無效的正則表達式模式

> SELECT regexp_substr('abc', '[invalid');
  Error: INVALID_PARAMETER_VALUE.PATTERN