REGEXP_COUNT

REGEXP_COUNT 函数返回在字符串中匹配正则表达式模式的次数的计数。

读取语法图跳过可视语法图REGEXP_COUNT(源字符串 ,pattern-expression ,开始 ,标志 )
源字符串
一个表达式,用于指定要在其中执行搜索的字符串。 表达式必须返回内置字符串,图形字符串,数字,日期时间, 开始更改或布尔值结束更改 数据类型的值。 如果该值不是 UTF-16 DBCLOB ,那么在搜索正则表达式模式之前,会将其隐式强制转换为 UTF-16 DBCLOB。 不支持具有 FOR BIT DATA 属性的字符串或二进制字符串。 字符串的长度不得大于 1 千兆字节。
模式表达
一个表达式,用于指定作为搜索模式的正则表达式字符串。 表达式必须返回内置字符串,图形字符串,数字,日期时间,开始更改或布尔值结束更改 数据类型的值。 如果该值不是 UTF-16 DBCLOB ,那么在搜索正则表达式模式之前,会将其隐式强制转换为 UTF-16 DBCLOB。 不支持具有 FOR BIT DATA 属性的字符串或二进制字符串。 字符串的长度不得大于 32K。

有效的 pattern-expression 由一组描述搜索模式的字符和控制字符组成。 有关有效控制字符的描述,请参阅 正则表达式控制字符

启动
一个表达式,用于指定要在其中启动搜索的 source-string 中的位置。 表达式必须返回任何内置数字,字符串或图形字符串数据类型的值。 在对该函数进行求值之前,会将该参数强制转换为 INTEGER。 有关转换为 INTEGER 的更多信息,请参阅 INTEGER 或 INT。 整数的值必须大于或等于 1。 如果整数值大于 source-string的实际长度,那么结果为 0。
标志
一个表达式,用于指定用于控制模式匹配的各个方面的标志。 表达式必须返回内置字符串或图形字符串数据类型的值。 不支持具有 FOR BIT DATA 属性的字符串或二进制字符串。 该字符串可以包含一个或多个有效的标志值,并且标志值的组合必须有效。 空字符串与值 "c" 相同。

有关有效标志字符的描述,请参阅 正则表达式标志值

此函数的结果是一个 INTEGER ,表示 source-stringpattern-expression 的出现次数。 如果找不到 pattern-expression 并且没有自变量为空,那么结果为 0。

如果 REGEXP_COUNT 函数的任何自变量可以为空,那么结果可以为空。 如果任何自变量为空,那么结果为空值。

注意

先决条件: 要使用 REGEXP_COUNT 函数,必须安装 International Components for Unicode (ICU) 选项

处理: 正则表达式处理是使用 International Components for Unicode (ICU) 正则表达式接口完成的。 有关更多信息,请参阅 http://userguide.icu-project.org/strings/regexp。

如果仅指定了三个自变量,那么第三个自变量可以是 startflags 自变量。 如果第三个自变量是字符串,那么会将其解释为 flags 自变量。 否则,会将其解释为 start 自变量。

语法替代方法: REGEXP_MATCH_COUNT 是 REGEXP_COUNT 的同义词。

示例

  • 计算 "史蒂文" 或 "斯蒂芬" 在字符串 "史蒂文-琼斯和斯蒂芬-史密斯是最佳球员" 中出现的次数。
    SELECT REGEXP_COUNT( 
      'Steven Jones and Stephen Smith are the best players',
      'Ste(v|ph)en')
    FROM sysibm.sysdummy1
    结果为 2。