arrays - 如何将函数应用于 Postgres 中数组列的每个元素?

标签 arrays postgresql

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/

相关文章:

java - 两个实体之间的多种不同类型关联 - SpringBoot、PostgreSQL

c# - 如何确定数组中的值属于哪个范围?

java - 将pdf内容写入java.io.Writer

php - SQL Server 使用 PHP 返回的列名称被截断为 29 个字符

ruby - 使用正则表达式数组过滤数组

sql - 复杂的 'Gaps and Islands' 问题

sql - 在不创建表的情况下使用 json_populate_recordset?

c - 将 C 中的标点符号与单词分开

postgresql - 使用 psql 如何列出安装在数据库中的扩展?

sql - 将多行转换为多列的一行