Postgres ГДЕ два массива имеют непустое пересечение - PullRequest
1 голос
/ 10 марта 2020

У меня есть таблица со столбцом tags типа varchar [].

Я бы хотел выбрать все строки, в которых теги содержат хотя бы одно из набора значений.

Примерно так:

-- Not real code
SELECT * 
FROM foo 
WHERE non_empty(set_intersection(tags, '{ "apples", "bananas", "cherries" }'))

Каков синтаксис этого?


Я знаю, что могу сделать серию OR с, но это кажется менее элегантно

1 Ответ

1 голос
/ 10 марта 2020

Вы можете использовать &&, оператор перекрытия массива:

select *
from foo
where tags && ARRAY['apples', 'bananas', 'cherries']

Из документации :

&&: перекрытие (есть общие элементы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...