- 类别:
REGEXP_COUNT¶
返回模式在字符串中出现的次数。
另请参阅 字符串函数(正则表达式)。
语法¶
REGEXP_COUNT( <subject> , <pattern> [ , <position> , <parameters> ] )
实参¶
必填:
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;
+--------+
| 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;
+----+----------------------+
| 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;
+----+--------+
| ID | RESULT |
|----+--------|
| 1 | 2 |
| 2 | 4 |
+----+--------+