2016-07-06 19 views
0

Ich versuche, eine PostgreSQL-Abfrage zu erstellen, um einen Teiltext in einer tsvector-Spalte zu finden.postgresql tsvector Teiltext Übereinstimmung

Ich habe einen Tsvector Wert wie diese "'89' 'TT7' 'test123'" und ich muss alle Zeilen finden, die "% es%" enthält.

Wie kann ich das tun?

Ich versuchte

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

Antwort

0

Es sieht aus wie Sie schnell ILIKE Anfragen für wilde Spiel verwenden möchten. pg_trgm wird das richtige Werkzeug sein, um damit zu gehen. Sie können POSIX regex rules zum Definieren Ihrer Abfrage verwenden.

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'; 

Ergebnis:

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

Links für bestehende Antworten: