Jak dokonać selekcji, gdy tablica zawiera klauzulę wartości w psql

99

Mam kolumnę arr typu array.

Potrzebuję wierszy, w których arrkolumna zawiera wartośćs

To zapytanie:

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

podaje błąd:

BŁĄD: operator nie istnieje: zmienna liczba znaków [] @> tekst []

Dlaczego to nie działa?

ps Wiem o any()operatorze, ale dlaczego nie @>działa?

Oto Shavadze
źródło

Odpowiedzi:

68

Pamiętaj, że może to również działać:

SELECT * FROM table WHERE s=ANY(array)
Aether Unbound
źródło
4
Uniemożliwia mi to również rzucanie na varchar, jak w przypadku s @> ARRAY['constant'::varchar], krótszego.
Andrew Backer
To nie będzie korzystać z indeksu GIN, więc nie użyłbym go. Popraw mnie, jeśli się mylę
GorillaApe
17
SELECT * FROM table WHERE arr && '{s}'::text[];

Porównaj dwie tablice do zawierania.

vol7ron
źródło