如何计算PostgreSQL中字符串中子字符串的出现次数?计算PostgreSQL中字符串中子字符串的出现次数
例子:
我有一个表
CREATE TABLE test."user"
(
uid integer NOT NULL,
name text,
result integer,
CONSTRAINT pkey PRIMARY KEY (uid)
)
我想写一个查询,以便result
包含列如何子o
列name
包含的许多事件。例如,如果在一行中,name
是hello world
,则列result
应该包含2
,因为字符串hello world
中有两个o
。
换句话说,我想编写一个查询,将作为输入:
和更新result
柱:
我我知道功能regexp_matches
及其g
选项,它指示需要扫描完整(g
=全局)字符串以查看是否存在所有出现的子字符串)。
实施例:
SELECT * FROM regexp_matches('hello world', 'o', 'g');
返回
{o}
{o}
和
SELECT COUNT(*) FROM regexp_matches('hello world', 'o', 'g');
返回
2
但是我不知道如何编写UPDATE
查询来更新result
列,以便包含列name
包含的子字符串的出现次数。
的[PostgreSQL的文本中出现的时间串的计数数]可能的复制(http://stackoverflow.com/questions/25757194/postgresql -count-number-of-times-substring-occurrence-in-text) –