本文介紹AnalyticDB MySQL版叢集支援的正則函數。
前提條件
AnalyticDB MySQL版叢集的核心版本需為3.1.5.10及以上版本。
說明 如何查看叢集的核心版本,請參見如何查看執行個體版本資訊。
REGEXP_INSTR
regexp_instr(source, pattern[, position[, occurrence[, option]]] )
- 命令說明:字串source中搜尋匹配Regex的子字串,並返回該子字串在字串source中的位置。如果指定position,則從第position個字元開始匹配,預設為1;如果指定occurrence,則返回第occurrence個匹配的位置,預設為1。option可以是0或1,預設為0,option為0時返回匹配子字串的起始位置;option為1時返回匹配子字串結束位置的下一個字元位置。
- 輸入值說明:
source
:待搜尋的字串,取實值型別為VARCHAR。pattern
:Regex。position
:表示從source的第一個字元開始匹配,position預設為1。取實值型別為BIGINT。occurrence
:表示返回第一次匹配的子字串,occurrence預設為1。取實值型別為BIGINT。option
:表示指定返回的位置,option可以是0或1,預設為0。取實值型別為BIGINT。
- 傳回值說明:返回BIGINT類型。沒有匹配到字串時,返回0。
- 樣本:
- 樣本1
返回結果如下。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 | +-----+
- 樣本3
返回結果如下。SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 1, 1) as res;
+-----+ | res | +-----+ | 4 | +-----+
- 樣本1
REGEXP_MATCHES
regexp_matches(source, pattern[, flag])
- 命令說明:返回字串source中匹配Regex的子字串構成的數組。如果包含flag 'g',則返回所有匹配的子字串結果,數組中可有多個元素;否則只返回匹配的第一個結果,數組中只有一個結果。如果pattern中包含帶括弧的子Regex,那麼結果數組中的元素為各個子Regex對應的子字串,否則為單個匹配pattern的子字串。
- 輸入值說明:
source
:待搜尋的字串,取實值型別為VARCHAR。pattern
:Regex。flag
:標誌一個或多個控制函數的字元,取實值型別為VARCHAR。
- 傳回值說明:返回array(array(VARCHAR))類型。沒有匹配到字串時,返回空數組。
- 樣本:
- 樣本1
返回結果如下。SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');
+---------------------+ | regexp_matches | +---------------------+ | [["bar","beque"]] |
- 樣本2
返回結果如下。SELECT regexp_matches('foobarbequebaz', 'barbeque');
+---------------------+ | regexp_matches | +---------------------+ | [["barbeque"]] |
- 樣本3
返回結果如下。SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g');
+------------------------------------------+ | regexp_matches | +------------------------------------------+ | [["bar","beque"], ["bazil","barf"]] |
- 樣本1
REGEXP_REPLACE
regexp_replace(source, pattern, replacement[, position[, occurrence]])
- 命令說明:將字串source中匹配pattern的子字串替換為replacement。如果指定position,則從第position個字元開始匹配和替換,預設為1;如果指定occurrence,則替換第occurrence個匹配的子字串,預設為0,表示替換全部。
- 輸入值說明:
source
:待搜尋的字串,取實值型別為VARCHAR。pattern
:Regex。replacement
:將匹配pattern的字串替換後的字串。取實值型別為VARCHAR。position
:表示從source的第一個字元開始匹配和替換,position預設為1。取實值型別為BIGINT。occurrence
:表示第occurrence次匹配的字串替換為replacement,occurrence預設為0。取實值型別為BIGINT。
- 傳回值說明:返回VARCHAR類型。沒有匹配到字串時,返回原字串。
- 樣本:
- 樣本1
返回結果如下。SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X') as res;
+-------+ | res | +-------+ | X X X | +-------+
- 樣本2
返回結果如下。SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) as res;
+-----------+ | res | +-----------+ | abc def X | +-----------+
- 樣本1
REGEXP_SUBSTR
regexp_substr(source, pattern[, position[, occurrence]])
- 命令說明:返回字串source中匹配Regex的子字串。如果指定position,則從第個字元開始匹配,position預設為1;如果指定occurrence,則返回第occurrence個匹配的子字串,occurrence預設為1。
- 輸入值說明:
source
:待搜尋的字串,取實值型別為VARCHAR。pattern
:Regex。position
:表示從source的第一個字元開始匹配,position預設為1。取實值型別為BIGINT。occurrence
:表示返回第一次匹配的子字串,occurrence預設為1。取實值型別為BIGINT。
- 傳回值說明:返回VARCHAR類型。沒有匹配到字串時,返回NULL。
- 樣本:
- 樣本1
返回結果如下。SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) as res;
+------+ | res | +------+ | ghi | +------+
- 樣本2
返回結果如下。SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+') as res;
+------+ | res | +------+ | abc | +------+
- 樣本1