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?

Respuestas:



65

Tenga en cuenta que esto también puede funcionar:

SELECT * FROM table WHERE s=ANY(array)

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.