Come fare una selezione con array contiene una clausola di valore in psql


96

Ho una colonna arr di tipo array.

Ho bisogno di ottenere righe, dove la arrcolonna contiene un valores

Questa domanda:

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

dà l'errore:

ERRORE: l'operatore non esiste: carattere variabile [] @> testo []

Perché non funziona?

ps conosco l' any()operatore, ma perché non @>funziona?

Risposte:



65

Nota che questo potrebbe funzionare anche:

SELECT * FROM table WHERE s=ANY(array)

4
E questo mi impedisce anche di dover lanciare a varchar, come in s @> ARRAY['constant'::varchar], più breve.
Andrew Backer

Questo non userà l'indice GIN, quindi lo userei. Correggimi se sbaglio
GorillaApe

17
SELECT * FROM table WHERE arr && '{s}'::text[];

Confronta due array per il contenimento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.