Làm cách nào để đếm số lần xuất hiện của chuỗi con trong chuỗi trong PostgreSQL?Đếm số lần xuất hiện của chuỗi con trong chuỗi trong PostgreSQL
Ví dụ:
Tôi có một bảng
CREATE TABLE test."user"
(
uid integer NOT NULL,
name text,
result integer,
CONSTRAINT pkey PRIMARY KEY (uid)
)
Tôi muốn viết một truy vấn để các result
chứa cột có bao nhiêu lần xuất hiện của chuỗi o
cột name
chứa. Ví dụ: nếu trong một hàng, name
là hello world
, cột result
phải chứa 2
, vì có hai o
trong chuỗi hello world
.
Nói cách khác, tôi đang cố gắng để viết một truy vấn mà sẽ mất đầu vào:
và cập nhật các result
cột:
tôi nhận thức được chức năng regexp_matches
và tùy chọn g
, cho biết toàn bộ chuỗi (g
= toàn cầu) cần phải được quét để biết tất cả các lần xuất hiện của chuỗi con).
Ví dụ:
SELECT * FROM regexp_matches('hello world', 'o', 'g');
lợi nhuận
{o}
{o}
và
SELECT COUNT(*) FROM regexp_matches('hello world', 'o', 'g');
lợi nhuận
2
Nhưng tôi không thấy cách viết truy vấn UPDATE
sẽ cập nhật cột result
theo cách nó sẽ chứa số lần xuất hiện của chuỗi con o cột name
chứa.
có thể trùng lặp của [PostgreSQL số đếm lần chuỗi xảy ra trong văn bản] (http://stackoverflow.com/questions/25757194/postgresql -nỗi-of-lần-substring-xảy ra-trong-văn bản) –