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 ?

Réponses:



65

Notez que cela peut également fonctionner:

SELECT * FROM table WHERE s=ANY(array)

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.