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?

Respostas:



65

Observe que isso também pode funcionar:

SELECT * FROM table WHERE s=ANY(array)

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.