postgresql數據庫中有一個josnb類型的數據:{ "paraInfo":[ { "lot":"A211225VJA1", "power":"70.00", "speed":"230.00", "nutName":"nut1", "waveform":"0#", "frequency":"700.00", "weldingTime":"20230605085401" }, { "lot":"A211225VJA1", "power":"70.00", "speed":"230.00", "nutName":"nut2", "waveform":"0#", "frequency":"700.00", "weldingTime":"20230605085401" } ] },如何使用SQL語句將他轉化為這樣的json數據:{ "nut1>lot":"A211225VJA1", "nut1>power":"70.00", "nut1>speed":"230.00", "nut1>waveform":"0#", "nut1>frequency":"700.00", "nut1>weldingTime":"20230605085401", "nut2>lot":"A211225VJA1", "nut2>power":"70.00", "nut2>speed":"230.00", "nut2>nutName":"nut2", "nut2>waveform":"0#", "nut2>frequency":"700.00", "nut2>weldingTime":"20230605085401" }
时间: 2023-07-08 19:51:39 浏览: 111
你可以使用PostgreSQL的jsonb_build_object函数和jsonb_agg函数来实现这个要求。
下面是一个示例查询语句,假设你有一个名为"test"的表,其中包含一个名为"data"的jsonb列:
```sql
SELECT jsonb_agg(
jsonb_build_object(
nutName || '>' || key, value
)
)
FROM test, jsonb_array_elements(data->'paraInfo') info, jsonb_each(info)
WHERE key != 'nutName';
```
在这个查询中,我们首先使用jsonb_array_elements函数将jsonb数组"paraInfo"拆分为对象,并使用jsonb_each函数将每个对象拆分为键值对。然后,使用nutName和key拼接出新的键,并使用value作为新的键值对的值。最后,使用jsonb_agg函数将所有新的键值对合并为一个新的jsonb数组。
这个查询将返回一个新的jsonb数组,其中包含所有新的键值对。
阅读全文