Подтвердить что ты не робот

Если массив содержит значение

У меня есть столбец arr, который имеет тип array.

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

Этот запрос SELECT * FROM table WHERE arr @> ARRAY['s']

дает ошибку: ERROR: operator does not exist: character varying[] @> text[]

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

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

4b9b3361

Ответ 1

Try

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

Ответ 2

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

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

Ответ 3

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

SELECT * FROM table WHERE s=ANY(array)