REGEXP_SUBSTR

返回从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_positionoccurrence非BIGINT类型或小于等于0时,返回报错。

  • sourcepatternstart_positionoccurrencereturn_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函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数