我正在尝试创建一个 PostgreSQL 查询以在 tsvector 列中查找部分文本。
我有一个这样的 tsvector 值"'89' 'TT7' 'test123'"
,我需要找到任何包含“%es%”的行。
我怎样才能做到这一点?
我试过了
select * from use_docs_conteudo
WHERE textodados @@ to_tsquery('es')
我正在尝试创建一个 PostgreSQL 查询以在 tsvector 列中查找部分文本。
我有一个这样的 tsvector 值"'89' 'TT7' 'test123'"
,我需要找到任何包含“%es%”的行。
我怎样才能做到这一点?
我试过了
select * from use_docs_conteudo
WHERE textodados @@ to_tsquery('es')
看起来您想使用快速ILIKE
查询进行野匹配。pg_trgm
将是正确的工具。您可以使用POSIX 正则表达式规则来定义您的查询。
WITH data(t) AS ( VALUES
('test123! TT7 89'::TEXT),
('test123, TT7 89'::TEXT),
('test@test123.domain TT7 89'::TEXT)
)
SELECT count(*) FROM data WHERE t ~* 'es' AND t ~* '\mtest123\M';
结果:
count
-------
3
(1 row)
现有答案的链接: