类别:

字符串函数(正则表达式)

REGEXP_COUNT

返回模式在字符串中出现的次数。

另请参阅 字符串函数(正则表达式)

语法

REGEXP_COUNT( <subject> , <pattern> [ , <position> , <parameters> ] )
Copy

实参

必填:

subject

用于搜索匹配项的字符串。

pattern

要匹配的模式。

有关指定模式的准则,请参阅 字符串函数(正则表达式)

可选:

position

函数开始搜索匹配项时,字符串开头的字符数。

默认值:``1``(搜索匹配项时,从左边的第一个字符开始)

parameters

包含一个或多个字符的字符串,指定用于搜索匹配项的参数。支持的值:

参数

描述

c

区分大小写的匹配

i

不区分大小写的匹配

m

多行模式

e

提取子匹配项

s

POSIX 通配符 .\n 匹配

默认:c

有关更多详细信息,请参阅 为正则表达式指定参数

返回

返回类型 NUMBER 的值。如果任何实参为 NULL,则返回 NULL。

使用说明

有关正则表达式函数,请参阅 一般使用说明

排序规则详细信息

Arguments with collation specifications currently aren't supported.

示例

以下示例计算单词 was 的出现次数。匹配从字符串中的第 1 个字符开始:

SELECT REGEXP_COUNT('It was the best of times, it was the worst of times',
                    '\\bwas\\b',
                    1) AS result;
Copy
+--------+
| RESULT |
|--------|
|      2 |
+--------+

以下示例说明了重叠出现的情况。创建表并插入数据:

CREATE OR REPLACE TABLE overlap (id NUMBER, a STRING);
INSERT INTO overlap VALUES (1,',abc,def,ghi,jkl,');
INSERT INTO overlap VALUES (2,',abc,,def,,ghi,,jkl,');

SELECT * FROM overlap;
Copy
+----+----------------------+
| ID | A                    |
|----+----------------------|
|  1 | ,abc,def,ghi,jkl,    |
|  2 | ,abc,,def,,ghi,,jkl, |
+----+----------------------+

运行查询,使用 REGEXP_COUNT 计算每一行中出现以下模式的次数:标点符号后是数字和字母,然后是标点符号。

SELECT id,
       REGEXP_COUNT(a,
                    '[[:punct:]][[:alnum:]]+[[:punct:]]',
                    1,
                    'i') AS result
  FROM overlap;
Copy
+----+--------+
| ID | RESULT |
|----+--------|
|  1 |      2 |
|  2 |      4 |
+----+--------+
语言: 中文