employees->'employment'->'benefits'
е json масив, така че трябва да го разместите, за да използвате елементите му във any
сравнение. Използвайте функцията jsonb_array_elements_text()
в странично свързване
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Синтаксисът
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
е еквивалентен на
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Думата lateral
може да се пропусне. За документацията
:
Вижте също:Каква е разликата между LATERAL и подзаявка в PostgreSQL?
Синтаксис
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
е форма на псевдоним според документацията