employees->'employment'->'benefits'
ist ein json-Array, also sollten Sie es entschachteln, um seine Elemente in any
zu verwenden Vergleich. Verwenden Sie die Funktion jsonb_array_elements_text()
in lateral join
:
select *
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
benefit = any('{Insurance A, Insurance B}'::text[]);
Die Syntax
from
employees,
jsonb_array_elements_text(employees->'employment'->'benefits')
entspricht
from
employees,
lateral jsonb_array_elements_text(employees->'employment'->'benefits')
Das Wort lateral
kann weggelassen werden. Für die Dokumentation
:
Siehe auch:Was ist der Unterschied zwischen LATERAL und einer Unterabfrage in PostgreSQL?
Die Syntax
from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
ist eine Form von Aliasing gemäß der Dokumentation