Как написать запрос содержимого в Postgres, который охватывает две таблицы? - PullRequest
0 голосов
/ 20 марта 2019

Я использую Postgres 9.5.У меня есть таблица с label столбцом ...

    Table "public.article"
             Column             |           Type           |                           Modifiers                            
--------------------------------+--------------------------+----------------------------------------------------------------
    ...
 label                          | text                     | 

Затем у меня есть другая таблица с конкретными словами ...

mydb=> \d keyword;
                                 Table "public.keyword"
 Column |          Type          |                          Modifiers                           
--------+------------------------+--------------------------------------------------------------
 id     | integer                | not null default nextval('keyword_id_seq'::regclass)
 word   | character varying(200) | not null

Как мне написать запрос, который проверяетесли article s label содержит (без учета регистра) один из word s из таблицы keyword?Я открыт для изменения типов данных каждого, если это помогает ускорить процесс.

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете использовать ILIKE для сопоставления шаблона без учета регистра:

SELECT a.label
FROM article AS a
   JOIN keyword AS k
      ON a.label ILIKE '%' || l.word || '%';

Если обе таблицы большие, это будет медленно, так как может использоваться только соединение с вложенным циклом. Я не думаю, что этого можно избежать.

...