我有一个包含这些数据的jsonb字段:
[{"FieldName":"wire1","Metadata":[{"Date":"2018-02-06T11:32:57.4022774+01:00","Source":"exampleSource"}]},
{"FieldName":"wire2","Metadata":[{"Date":"2018-02-06T11:32:57.4022774+01:00","Source":"exampleSource"}]},
{"FieldName":"wire3","Metadata":[{"Date":"2018-02-06T11:32:57.4022774+01:00","Source":"exampleSource"}]}]
作为select的一部分,访问此数组中FieldName = FieldValue
的正确方法是什么?我们尝试SELECT meta::json->0 FROM myTable
,并返回null。 (meta是包含metaData的列名称)
我希望得到的是,在一个选择中,返回FieldName = wire1,或Source = exampleSource,或两者都为真的所有行。
答案 0 :(得分:0)
你需要的是 jsonb_array_elements 功能。
- > 会返回一个对象
SELECT jsonb_array_elements(**columnName**)->'FieldName' FROM ....
returns FieldName object
- >> 会返回文字
SELECT jsonb_array_elements(**columnName**)->>'FieldName' FROM ....
returns "wire1" text