REGEXP_COUNT

REGEXP_COUNT函数用于计算指定字符在字符串中从指定位置开始出现的次数。

命令格式

BIGINT REGEXP_COUNT(STRING <source>, STRING <pattern>[, BIGINT <start_position>])

参数说明

  • source:必填。STRING类型。被匹配的字符串。

  • pattern:必填。STRING类型常量或正则表达式。用于匹配的子字符串或正则表达式。更多正则表达式编写规范,请参见正则表达式规范

  • start_position:可选。BIGINT类型常量,必须大于0。不指定时默认为1,表示从source的第一个字符开始匹配。

返回值说明

返回BIGINT类型。返回规则如下:

  • 若没有匹配成功,返回0。

  • sourceSTRING类型,返回报错。

  • pattern为空字符串或非STRING类型,返回报错。

  • start_positionBIGINT类型或值小于等于0,返回报错。

  • sourcepatternstart_position值为NULL时,返回NULL。

使用示例

  • 示例1:计算abababc中从指定位置开始,匹配指定字符的次数。命令示例如下。

    • 计算字符串abababc中正则表达式a.c(以a开始,以c结束,并且中间有任何单个字符)出现的次数:

      --返回1。
      SELECT REGEXP_COUNT('abababc', 'a.c');
    • 计算字符串abababc中从第三个字符开始,正则表达式[[:alpha:]]{2}(任意连续两个字母)出现的次数:

      --返回2。
      SELECT REGEXP_COUNT('abababc', '[[:alpha:]]{2}', 3);
  • 示例2:任一输入参数为NULL。命令示例如下。

    --返回NULL。
    SELECT REGEXP_COUNT('abababc', null);
  • 示例3:计算:出现在JSON字符串{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}中的次数。命令示例如下。

    --返回4。
    SELECT REGEXP_COUNT('{"account_id":123456789,"account_name":"allen","location":"hangzhou","bill":100}',':');

相关函数

REGEXP_COUNT函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数