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)
ドキュメント によるエイリアシングの形式です。