在列中说详细信息,值存储为:
[{"id":"key1","name":"Concerts \u0026amp; Tour Dates"},{"id":"key2","name":"Nightlife \u0026amp; Singles"}]
列类型:文本
我需要使用单个SELECT语句获取名称的逗号分隔值。还需要放大器符号。
结果: [音乐会&旅游日期,夜生活&碟]
答案 0 :(得分:2)
这样做:
select string_agg(d.e ->> 'name', ',')
from the_table, json_array_elements(that_text_column::json) as d(e);
要将&
更改为&
,请使用替换功能:
select string_agg(replace(d.e ->> 'name','&', '&'), ',')
from the_table, json_array_elements(that_text_column::json) as d(e);