How to apply a function to each element of an array column in Postgres?

后端 未结 4 705
遇见更好的自我
遇见更好的自我 2020-12-07 20:32

A Pg query returns an array. I would like to retrieve that with each element formatted to 3 decimal places. How can I apply a function to each element of an array? Something

4条回答
  •  渐次进展
    2020-12-07 21:00

    First, turn the array into a set using unnest:

    > SELECT n FROM unnest(ARRAY[1.53224,0.23411234]) AS n;
         n      
    ------------
        1.53224
     0.23411234
    (2 rows)
    

    Then, apply an expression to the column:

    > SELECT ROUND(n, 2) FROM unnest(ARRAY[1.53224,0.23411234]) AS n;
     round 
    -------
      1.53
      0.23
    (2 rows)
    

    Finally, use array_agg to turn the set back into an array:

    > SELECT array_agg(ROUND(n, 2)) FROM unnest(ARRAY[1.53224,0.23411234]) AS n;
      array_agg  
    -------------
     {1.53,0.23}
    (1 row)
    

提交回复
热议问题