Как подсчитать количество вхождений подстроки внутри строки в 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
= global) строку для присутствия всех вхождений подстроки).
Пример:
SELECT * FROM regexp_matches('hello world', 'o', 'g');
возвращает
{o}
{o}
и
SELECT COUNT(*) FROM regexp_matches('hello world', 'o', 'g');
возвращает
2
Но я не вижу, как написать запрос UPDATE
, который обновил бы столбец result
таким образом, чтобы он содержал количество вхождений подстроки o столбца name
.