【发布时间】:2021-01-14 23:29:28
【问题描述】:
给定 jsonb 数组和 PostgreSQL 12:
[{"data":"42","type":"TEMPERATURE"},{"data":"1.1","type":"PRESSURE"}]
需要转换成:
[{"data":"42","type":"temperature"},{"data":"1.1","type":"pressure"}]
是否有可能以某种方式迭代 jsonb 数组并仅小写“类型”值?
我试过了:
SELECT jsonb_agg(
jsonb_build_object(k, CASE WHEN k <> 'type' THEN v ELSE lower(v::text)::jsonb END)
)
FROM jsonb_array_elements(
'[{"data":"42","type":"TEMPERATURE"},{"data":"1.1","type":"PRESSURE"}]'::jsonb
) e(e), lateral jsonb_each(e) p(k, v)
但它将数据和类型对分成单独的元素。
[{"data": "42"}, {"type": "temperature"}, {"data": "1.1"}, {"type": "pressure"}]
【问题讨论】:
标签: sql arrays json postgresql unnest