#REGEXP_COUNT

regexp_count
REGEXP_COUNT ( expr , regexp , position , match_para )

REGEXP_COUNT为正则表达式函数,在expr表示的源字符串中按正则模式可以匹配到的次数,如果没有找到匹配项,则函数返回0。

expr的值须为字符型,或可转换为字符型的其他类型。当expr的值为NULL时,函数返回NULL。

expr不支持32000字节以上的LOB类型数据。

本函数使用输入字符集定义的字符计算字符串(支持UTF-8)。

regexp

RegExp,长度不超过512字节,可为NULL,此时函数返回NULL。

position

指定开始进行匹配的偏移量,须为数值型数据,或可转换为NUMBER类型的其他类型数据。内部处理时统一转换为BIGINT类型。

position为与expr相同的通用表达式,其值存在如下规则:

  • 应该为一个正整数。
  • 为NULL时,函数返回NULL。
  • 为0或负数时,函数返回Out of range错误。
  • 为小数时,截断保留整数作为position值。
  • 超出expr值的长度时,不执行匹配,函数返回0值。

指定此值时,系统从expr的第position个字符开始匹配,在找到第一个正则匹配项后,继续从匹配项之后的第一个字符开始,查找第二个匹配项,直到expr的最后一个字符。

未指定此值时,默认从第一个字符开始匹配。

match_para

正则匹配参数,与REGEXP_LIKE中的含义相同。

示例

SELECT REGEXP_COUNT('123123123123123', '123', 1, 'i') REGEXP_COUNT FROM DUAL;
         REGEXP_COUNT
---------------------
                    5

SELECT REGEXP_COUNT('123123123123123', '123', 4, 'i') REGEXP_COUNT FROM DUAL; 
         REGEXP_COUNT
---------------------
                    4

SELECT REGEXP_COUNT('A1B2C3', '[A-Z][0-9]') REGEXP_COUNT FROM DUAL;
         REGEXP_COUNT 
--------------------- 
                    3
pdf-btn 下载文档
copy-btn 复制链接