Como fazer uma seleção com array contém cláusula de valor no psql

96

Eu tenho coluna arr que é do tipo array.

Preciso obter linhas, onde a arrcoluna contém o valors

Esta consulta:

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

dá o erro:

ERROR: operator does not exist: charactervaring [] @> text []

Por que não funciona?

ps eu sei sobre o any()operador, mas por que não @>funciona?

Oto Shavadze
fonte

Respostas:

65

Observe que isso também pode funcionar:

SELECT * FROM table WHERE s=ANY(array)
AetherUnbound
fonte
4
E isso também me impede de precisar lançar para varchar, como em s @> ARRAY['constant'::varchar], mais curto.
Andrew Backer
Isso não usará o índice GIN, então eu o usaria. Corrija-me se eu estiver errado
GorillaApe
17
SELECT * FROM table WHERE arr && '{s}'::text[];

Compare duas matrizes para contenção.

Vol7ron
fonte