PostgreSQL如何聚合数组表数据到二维数组表并处理空值
解决PostgreSQL数组聚合时NULL值的问题
你的问题核心是array_agg函数默认会忽略NULL值,且无法直接聚合包含NULL的列,同时需要将NULL映射为空数组。可以通过coalesce函数先把NULL替换为空数组,再进行聚合。
正确的插入语句
insert into B (v) select array_agg(coalesce(v, '{}'::int[])) from A;
原理说明
coalesce(v, '{}'::int[]):将表A中v列的NULL值替换为int[]类型的空数组{},对于原本就是数组(包括空数组)的行,保留原数组值。array_agg(...):此时聚合的所有值都是非NULL的数组,函数可以正常将它们聚合为二维数组,最终得到你需要的{{1,2,3},{},{},{4,5}}。
内容的提问来源于stack exchange,提问作者zella
相关产品推荐
相关产品推荐

