REGEXP_COUNT 统计字符出现的次数函数,Oracle11g后引入了此函数。
- 语法
REGEXP_COUNT (source_char, pattern [, position [, match_param]])
示例,使用LENGTH( )组合REGEXP_COUNT函数实现统计字符'#'出现的次数:
SELECT REGEXP_COUNT('00000000,11000000,11011200,#1101127200,1101127201,1101127202,#1101127203','#') COUNT FROM DUAL;
SELECT LENGTH(REGEXP_REPLACE('00000000,11000000,11011200,#1101127200,1101127201,1101127202,#1101127203','1+')) COUNT FROM DUAL;
- 大小写字符统计
REGEXP_COUNT默认区分大小写统计,等同于全参形式:
SELECT REGEXP_COUNT('00000000,11000000,11011200,#A1101127200,1101127201,1101127202,#1101127203','a',1,'c') COUNT FROM DUAL;
区分大小写敏感统计,启用'i'参数即可:
SELECT REGEXP_COUNT('00000000,11000000,11011200,#A1101127200,1101127201,1101127202,#1101127203','a',1,'i') COUNT FROM DUAL;
- 从指定位置查找
REGEXP_COUNT倒数第二个参数表示开始检索关键字的位置,如下:
SELECT REGEXP_COUNT('00000000,11000000,11011200,#A1101127200,1101127201,1101127202,#1101127203','a',30,'i') COUNT FROM DUAL;
REGEXP_REPLACE函数
另一种方式,可通过REGEXP_REPLACE函数匹配正则表达式实现,如下统计字符'#'出现的次数:
SELECT LENGTH(REGEXP_REPLACE('00000000,11000000,11011200,#1101127200,1101127201,1101127202,#1101127203','1+')) COUNT FROM DUAL;
- # ↩