2016-07-06 40 views
0

我想創建PostgreSQL查詢來查找tsvector列中的部分文本。postgresql tsvector部分文本匹配

我有一個像這樣的tsvector值"'89' 'TT7' 'test123'",我需要找到任何包含「%es%」的行。

我該怎麼做?

我試圖

select * from use_docs_conteudo 
WHERE textodados @@ to_tsquery('es') 

回答

0

看起來你要使用快速ILIKE查詢野生比賽。 pg_trgm將是合適的工具。您可以使用POSIX regex rules來定義您的查詢。

WITH data(t) AS (VALUES 
    ('test123! TT7 89'::TEXT), 
    ('test123, TT7 89'::TEXT), 
    ('[email protected] TT7 89'::TEXT) 
) 
SELECT count(*) FROM data WHERE t ~* 'es' AND t ~* '\mtest123\M'; 

結果:

count 
------- 
    3 
(1 row) 

鏈接現有的答案: