Как сделать выбор с массивом, содержащим предложение значения в psql


99

У меня есть столбец arr типа array.

Мне нужно получить строки, в которых arrстолбец содержит значениеs

Этот запрос:

SELECT * FROM table WHERE arr @> ARRAY['s']

выдает ошибку:

ОШИБКА: оператор не существует: меняется символ [] @> текст []

Почему не работает?

ps Я знаю про any()оператора, но почему не @>работает?

Ответы:



68

Обратите внимание, что это также может работать:

SELECT * FROM table WHERE s=ANY(array)

4
И это также избавляет меня от необходимости приводить к varchar, например s @> ARRAY['constant'::varchar], короче.
Эндрю Бэкер

Это не будет использовать индекс GIN, поэтому я бы использовал его. Поправьте меня, если я ошибаюсь
GorillaApe

17
SELECT * FROM table WHERE arr && '{s}'::text[];

Сравните два массива на предмет содержания.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.