employees->'employment'->'benefits'
jest tablicą json, więc powinieneś ją rozpakować, aby używać jej elementów w any
porównanie.Użyj funkcji jsonb_array_elements_text()
w złączeniu bocznym
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Składnia
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
jest odpowiednikiem
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Słowo lateral
można pominąć. dokumentacja
:
Zobacz też:Jaka jest różnica między LATERAL a podzapytaniem w PostgreSQL?
Składnia
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
jest formą aliasingu, zgodnie z dokumentacją