employees->'employment'->'benefits'
is een json-array, dus je moet het uit elkaar halen om de elementen ervan te gebruiken in any
vergelijking.Gebruik de functie jsonb_array_elements_text()
in laterale samenvoeging
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
De syntaxis
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
is gelijk aan
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Het woord lateral
mag worden weggelaten. Voor de documentatie
:
Zie ook:Wat is het verschil tussen LATERAL en een subquery in PostgreSQL?
De syntaxis
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
is een vorm van aliasing, volgens de documentatie