繁体   English   中英

替换二维数组中的元素

[英]replace elements in a 2d array

给定二维数组

select (ARRAY[[1,2,3], [4,0,0], [7,8,9]]);

{{1,2,3},{4,0,0},{7,8,9}}

有没有办法用值5和6替换[2:2][2:]{{0,0}} )处的切片? array_replace替换一个特定的值,所以我不确定该如何处理。

我相信在plpgsql中编写函数更易读。 但是,也存在一个纯SQL解决方案: select ( select array_agg(inner_array order by outer_index) from ( select outer_index, array_agg( case when outer_index = 2 and inner_index = 2 then 5 when outer_index = 2 and inner_index = 3 then 6 else item end order by inner_index ) inner_array from ( select item, 1 + (n - 1) % array_length(a, 1) inner_index, 1 + (n - 1) / array_length(a, 2) outer_index from unnest(a) with ordinality x (item, n) ) _ group by outer_index )_ ) from ( select (ARRAY[[1,2,3], [4,0,0], [7,8,9]]) a )_;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM