employees->'employment'->'benefits'
är en json-array, så du bör avinstallera den för att använda dess element i any
jämförelse.Använd funktionen jsonb_array_elements_text()
i lateral koppling
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Syntaxen
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
motsvarar
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Ordet lateral
kan utelämnas. För dokumentationen
:
Se även:Vad är skillnaden mellan LATERAL och en underfråga i PostgreSQL?
Syntaxen
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
är en form av alias, enligt dokumentationen