Come posso contare il numero di occorrenze di una sottostringa all'interno di una stringa in PostgreSQL?Contare il numero di occorrenze di una sottostringa all'interno di una stringa in PostgreSQL
Esempio:
Ho una tabella
CREATE TABLE test."user"
(
uid integer NOT NULL,
name text,
result integer,
CONSTRAINT pkey PRIMARY KEY (uid)
)
Voglio scrivere una query in modo che la colonna di result
contiene il numero di occorrenze della stringa o
colonna name
contiene. Ad esempio, se in una riga, name
è hello world
, la colonna result
deve contenere 2
, poiché nella stringa hello world
sono presenti due numeri .
In altre parole, io sto cercando di scrivere una query che avrebbe preso come input:
e aggiornare la colonna result
:
I sono a conoscenza della funzione regexp_matches
e della sua opzione g
, che indica che la stringa completa (g
= global) deve essere sottoposta a scansione per la presenza di tutte le occorrenze della sottostringa).
Esempio:
SELECT * FROM regexp_matches('hello world', 'o', 'g');
rendimenti
{o}
{o}
e
SELECT COUNT(*) FROM regexp_matches('hello world', 'o', 'g');
restituisce
2
Ma non vedo come scrivere una query result
che aggiorni la colonna result
in modo da contenere il numero di occorrenze della sottostringa o della colonna name
.
Possibile duplicato del [PostgreSQL numero di conteggio delle volte si verifica stringa nel testo] (http://stackoverflow.com/questions/25757194/postgresql -count-number-of-times-substring-happens-in-text) –