json []
があるかどうかわかりません ( json
のPostgreSQL配列 値)入力された列、または json
タイプされた列。これはJSON配列のように見えます(例のように)。
いずれの場合も、クエリを実行する前に配列を拡張する必要があります。 json []
の場合 、 unnest(anyarray)
>
; json
のJSON配列の場合 入力した列には、 json_array_elements(json)<を使用する必要があります。 / code>
(および LATERAL
>
結合-私の例では暗黙的です):
select t.id,
each_section ->> 'name' section_name,
each_attribute ->> 'attrkey3' attrkey3
from t
cross join unnest(array_of_json) each_section
cross join json_array_elements(each_section -> 'attributes') each_attribute
where (each_attribute -> 'attrkey3') is not null;
-- use "where each_attribute ? 'attrkey3'" in case of jsonb
select t.id,
each_section ->> 'name' section_name,
each_attribute ->> 'attrkey3' attrkey3
from t
cross join json_array_elements(json_array) each_section
cross join json_array_elements(each_section -> 'attributes') each_attribute
where (each_attribute -> 'attrkey3') is not null;
残念ながら、データでインデックスを使用することはできません。そのためには、最初にスキーマを修正する必要があります。