Pg 查询返回一个数组。我想用格式化为小数点后 3 位的每个元素来检索它。如何将函数应用于数组的每个元素?像下面这样的东西(显然是错误的)——
SELECT Round(ARRAY[1.53224,0.23411234], 2);
{1.532, 0.234}
我想我正在寻找类似 Perl 的 map
函数的东西。
最佳答案
首先,使用 unnest 将数组变成集合:
> SELECT n FROM unnest(ARRAY[1.53224,0.23411234]) AS n;
n
------------
1.53224
0.23411234
(2 rows)
然后,对列应用表达式:
> SELECT ROUND(n, 2) FROM unnest(ARRAY[1.53224,0.23411234]) AS n;
round
-------
1.53
0.23
(2 rows)
最后,使用array_agg将集合转回数组:
> SELECT array_agg(ROUND(n, 2)) FROM unnest(ARRAY[1.53224,0.23411234]) AS n;
array_agg
-------------
{1.53,0.23}
(1 row)
关于arrays - 如何将函数应用于 Postgres 中数组列的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584119/