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?

Odpowiedzi:



68

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

SELECT * FROM table WHERE s=ANY(array)

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.