3

我正在尝试创建一个 PostgreSQL 查询以在 tsvector 列中查找部分文本。

我有一个这样的 tsvector 值"'89' 'TT7' 'test123'",我需要找到任何包含“%es%”的行。

我怎样才能做到这一点?

我试过了

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

1 回答 1

3

看起来您想使用快速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)

现有答案的链接:

于 2016-07-07T00:05:42.500 回答