我有heart_rate_json
一个用 JSON 列命名的Postgresql 表,该列data
包含一个对象数组,如下所示:
[{
"dateTime" : "01/24/15 21:07:45",
"value" : {
"bpm" : 70,
"confidence" : 0
}
},{
"dateTime" : "01/24/15 21:08:30",
"value" : {
"bpm" : 64,
"confidence" : 2
}
}]
当我运行此查询希望提取数组对象值时:
SELECT
data -> 'dateTime' AS datetime,
data -> 'value' ->> 'bpm' AS bpm,
data -> 'value' ->> 'confidence' AS confidence
FROM heart_rate_json;
查询结果有三列,但所有值都是[null]
。
选择data
列确实会返回包含整个对象数组的结果:
SELECT data FROM heart_rate_json;
我在这里缺少什么?
您需要首先将 JSON 数组扩展为一组 JSON 元素(您可以使用 : json_array_elements(json)
):
SELECT
data -> 'dateTime' AS datetime,
data -> 'value' ->> 'bpm' AS bpm,
data -> 'value' ->> 'confidence' AS confidence
FROM (SELECT json_array_elements(data) AS data FROM heart_rate_json) AS sq;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句