对PostgreSQL中数组类型列中的每个元素应用除法

Posted

技术标签:

【中文标题】对PostgreSQL中数组类型列中的每个元素应用除法【英文标题】:Apply division to each element in column of type array in PostgreSQL 【发布时间】:2016-12-16 18:49:37 【问题描述】:

我有一个整数 [4] 类型的 box_coordinates 列,我想将数组的每个元素除以 640 并将其插入到浮点 [4] 类型的新列中。我首先尝试在聚合之前划分数组的每个元素

SELECT n/640::float
FROM (
    SELECT unnest(box_coordinates) 
    FROM images 
) AS n;

但它失败并出现错误

ERROR:  operator does not exist: record / integer
HINT:   No operator matches the given name and argument type(s). 
        You might need to add explicit type casts.

如何应用数组元素除法,然后将结果插入到 float[4] 类型的新列中,同时保持新数组中元素的顺序不变?

【问题讨论】:

【参考方案1】:

您正在使用n 而不是unnest 结果

SELECT n.coord/640::float
FROM (
    SELECT unnest(box_coordinates) as coord
    FROM images 
    LIMIT 4
) AS n;

【讨论】:

谢谢,这行得通!您能否编辑您的帖子以回答您如何将其插入到 float[4] 类型的新列中? 你需要array_agg() ***.com/questions/6402043/…

以上是关于对PostgreSQL中数组类型列中的每个元素应用除法的主要内容,如果未能解决你的问题,请参考以下文章

查询 JSON 列中的数组元素

如何在 PostgreSQL JSONB 列中查询具有异构元素的嵌套数组

PySpark:如何为数组列中的每个元素添加值?

从 pyspark 中的数据框数组类型列中获取“名称”元素

聚合数组列中不同元素的单个数组,不包括 NULL

如何使用 Diesel 计算数组列中不同元素的数量?