employees->'employment'->'benefits'
je pole json, takže byste jej měli zrušit vnoření, abyste mohli používat jeho prvky v any
porovnání. Použijte funkci jsonb_array_elements_text()
v laterální připojení
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Syntaxe
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
je ekvivalentní
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Slovo lateral
lze vynechat. Pro dokumentaci
:
Viz také:Jaký je rozdíl mezi LATERAL a poddotazem v PostgreSQL?
Syntaxe
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
je forma aliasingu podle dokumentace