返回從start_position位置開始,source中第occurrence次匹配指定pattern的子串。
命令格式
string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
參數說明
source:必填。STRING類型。待搜尋的字串。
pattern:必填。STRING類型常量或Regex。待匹配的模型。更多Regex編寫規範,請參見Regex規範。
start_position:可選。其他BIGINT常量,必須大於0。不指定時預設為1,表示從source的第一個字元開始匹配。
occurrence:可選。BIGINT常量,必須大於0。不指定時預設為1,表示返回第一次匹配的子串。
傳回值說明
返回STRING類型。返回規則如下:
如果pattern為空白串,返回報錯。
沒有匹配時,返回NULL。
start_position或occurrence非BIGINT類型或小於等於0時,返回報錯。
source、pattern、start_position、occurrence或return_option值為NULL時,返回NULL。
使用樣本
樣本1:返回
I love aliyun very much
字串中與指定規則匹配的字串。命令樣本如下。--返回aliyun。 select regexp_substr('I love aliyun very much', 'a[[:alpha:]]{5}'); --返回 have。 select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1); --返回 2。 select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 2);
樣本2:任一輸入參數為NULL。命令樣本如下。
--返回NULL。 select regexp_substr('I love aliyun very much', null);
相關函數
REGEXP_SUBSTR函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數。