PostgreSQL:用逗号分割字符串并合并

时间:2020-05-04 15:31:34

标签: sql postgresql split

有没有一种方法可以分割字符串并重新组合值,如下面的Postgresql所示。

input_column
abc.1, xyz.1, abc.2, abc.3 xyz.3


result_column
abc{1,2,3}, xyz{1,3}

1 个答案:

答案 0 :(得分:1)

您可以先将项目拆分为行,然后再聚合:

select code, array_agg(value) as values
from (
  select split_part(item, '.', 1) as code, 
         split_part(item, '.', 2) as value 
  from the_table t
    cross join regexp_split_to_table(t.input_column, '\s*,\s*') as x(item)
) t    
group by code
order by code

我使用regexp_split_to_table()而不是string_to_array()unnest()来生成行,因此在逗号后处理空格。结合使用unnest()string_to_array(),这将需要额外的trim(),这会使内部查询更难阅读。

Online example