【发布时间】:2021-07-02 13:26:32
【问题描述】:
我有一个包含 jsonb-row 的 postgres 表,如下所示:
| MyTable.refs |
|---|
[{"url": "url1", "name": "name1"}, {"url": "url2", "name": "name2"}] |
[] |
[{"url": "url3", "name": "name3"} |
我想写一个 postgres 函数来创建一个像这样的新列:
| result |
|---|
['<a href="url1">name1</a>', '<a href="url2">name2</a>'] |
[] |
['<a href="url3">name3</a>'} |
我已经有东西了:
SELECT
jsonb_agg(format('<a href="%s">%s</a>', (elem ->> 'url'), (elem ->> 'name')))
FROM jsonb_array_elements('[{"url": "url1", "name": "name1"}, {"url": "url2", "name": "name2"}]'::jsonb) elem;
返回:
["<a href="url1">name1</a>", "<a href="url2">name2</a>"]
如何将此转换应用于整个列?
【问题讨论】:
-
看来您已经有了解决方案。那你的问题到底是什么?
-
我只能在一个 jsonb 元素上执行此操作,但我太笨了,无法将其应用于列/表。我敢肯定这很容易,所以请赐教!
-
应该改进标题以反映实际问题。也许是“在表行中聚合 JSON 数组”?
标签: json postgresql jsonb