Как подсчитать количество вхождений подстроки внутри строки в 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.

