返回从start_position位置开始,source中第occurrence次匹配指定pattern的子串。
命令格式
string regexp_substr(string <source>, string <pattern>[, bigint <start_position>[, bigint <occurrence>]])
参数说明
source:必填。STRING类型。待搜索的字符串。
pattern:必填。STRING类型常量或正则表达式。待匹配的模型。更多正则表达式编写规范,请参见正则表达式规范。
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函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数。