2016-07-06 3 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) 

Ссылки для существующих ответов: