employees->'employment'->'benefits'
er et json-array, så du bør unnest det for at bruge dets elementer i any
sammenligning.Brug funktionen jsonb_array_elements_text()
i lateral joinforbindelse
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Syntaksen
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
svarer til
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Ordet lateral
kan udelades. For dokumentationen
:
Se også:Hvad er forskellen mellem LATERAL og en underforespørgsel i PostgreSQL?
Syntaksen
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
er en form for aliasing ifølge dokumentationen