在PostgreSQL中,如何计算字符串中子字符串的出现次数?
例子:
我有一张桌子
CREATE TABLE test."user"
(
uid integer NOT NULL,
name text,
result integer,
CONSTRAINT pkey PRIMARY KEY (uid)
)
我想写一个查询,以便result
列包含name
列包含的子字符串o
的出现次数.例如,如果在一行中,name
是hello world
,那么列result
应该包含2
,因为字符串hello world
中有两个o
.
换句话说,我正在try 编写一个将作为输入的查询:
并更新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
列包含的子字符串的出现次数.