PostgreSQL:去除表中数组元素括号,优化排序后字段格式
解决方案
你需要在unnest提取数组元素后,对每个元素去除前后的括号,再进行排序和聚合操作。修改后的代码如下:
FOR _reference, _val IN select reference, categories from responses LOOP _array = ( select array_agg(p.trimmed_val order by p.trimmed_val) from ( select trim(unnest(_val::text[]), '()') as trimmed_val ) as p ); update responses SET categories = _array where reference = _reference; END LOOP;
关键修改点
- 使用
trim(unnest(_val::text[]), '()'):在提取数组每个元素时,直接用trim函数移除元素前后的(和) - 后续排序和聚合基于处理后的
trimmed_val,确保结果是排序且无内部括号的数组
执行这段代码后,categories列的输出格式就会从{(DSM),(Post)}变为{DSM,Post}。
内容的提问来源于stack exchange,提问作者Kamyab
相关产品推荐
相关产品推荐

