Cómo hacer una selección con una matriz contiene cláusula de valor en psql

96

Tengo una columna arr que es de tipo array.

Necesito obtener filas, donde la arrcolumna contiene valors

Esta consulta:

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

da el error:

ERROR: el operador no existe: el carácter varía [] @> texto []

Por que no funciona?

ps Yo sé sobre el any()operador, pero ¿por qué no @>funciona?

Oto Shavadze
fuente

Respuestas:

65

Tenga en cuenta que esto también puede funcionar:

SELECT * FROM table WHERE s=ANY(array)
ÉterUnbound
fuente
4
Y esto también evita que tenga que lanzar a varchar, como en s @> ARRAY['constant'::varchar], más corto.
Andrew Backer
Esto no usará el índice GIN, así que lo usaría.
Corrígeme
17
SELECT * FROM table WHERE arr && '{s}'::text[];

Compare dos matrices para la contención.

vol7ron
fuente