Comment faire une sélection avec un tableau contenant une clause de valeur dans psql

96

J'ai une colonne arr qui est de type array.

J'ai besoin d'obtenir des lignes, où la arrcolonne contient une valeurs

Cette requête:

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

donne l'erreur:

ERREUR: l'opérateur n'existe pas: le caractère varie [] @> texte []

Pourquoi ça ne marche pas?

ps Je connais l' any()opérateur, mais pourquoi ne @>fonctionne pas ?

Oto Shavadze
la source

Réponses:

65

Notez que cela peut également fonctionner:

SELECT * FROM table WHERE s=ANY(array)
Éther
la source
4
Et cela m'évite également d'avoir besoin de lancer sur varchar, comme dans s @> ARRAY['constant'::varchar], plus court.
Andrew Backer
Cela n'utilisera pas l'index GIN, donc je l'utiliserais. Corrigez-moi si je me trompe
GorillaApe
17
SELECT * FROM table WHERE arr && '{s}'::text[];

Comparez deux tableaux pour le confinement.

vol7ron
la source