PostgreSQL中如何将{2,3,4}转换为{{2,TRUE},{3,TRUE},{4,TRUE}}
PostgreSQL数组转换方法
要把一维数组{2,3,4}转换为二维数组{{2,TRUE}, {3,TRUE}, {4,TRUE}},可以通过拆分数组+构造子数组+聚合的步骤实现,具体SQL语句如下:
SELECT array_agg(array[elem, TRUE::boolean]) AS converted_array FROM unnest('{2,3,4}'::int[]) AS elem;
步骤说明:
- 拆分数组:使用
unnest('{2,3,4}'::int[])将一维数组拆分为单行记录,每一行对应数组中的一个元素(2、3、4)。 - 构造子数组:通过
array[elem, TRUE::boolean]为每个元素生成包含原元素和TRUE的子数组,比如[2, TRUE]。 - 聚合为二维数组:用
array_agg()将所有子数组重新聚合为一个二维数组,最终得到目标结果{{2,true},{3,true},{4,true}}。
单独使用unnest无法得到预期结果,是因为它仅负责拆分一维数组为行记录,还需要配合聚合函数将拆分后的行重新组合为二维数组。
内容的提问来源于stack exchange,提问作者Paul Wanjohi
相关产品推荐
相关产品推荐

