employees->'employment'->'benefits'
adalah larik json, jadi Anda harus menghapus sarangnya untuk menggunakan elemennya di any
perbandingan.Gunakan fungsi jsonb_array_elements_text()
di gabung lateral
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Sintaks
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
setara dengan
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Kata lateral
dapat dihilangkan. Untuk dokumentasi
:
Lihat juga:Apa perbedaan antara LATERAL dan subquery di PostgreSQL?
Sintaksnya
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
adalah bentuk aliasing, menurut dokumentasi