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

99

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

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

Этот запрос:

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

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

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

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

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

Ото Шавадзе
источник

Ответы:

68

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

SELECT * FROM table WHERE s=ANY(array)
AetherUnbound
источник
4
И это также избавляет меня от необходимости приводить к varchar, например s @> ARRAY['constant'::varchar], короче.
Эндрю Бэкер
Это не будет использовать индекс GIN, поэтому я бы использовал его. Поправьте меня, если я ошибаюсь
GorillaApe
17
SELECT * FROM table WHERE arr && '{s}'::text[];

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

vol7ron
источник