gpt4 book ai didi

arrays - 如何从 INSERT 命令的非数组字段中获取数组?

转载 作者:行者123 更新时间:2023-11-29 11:35:22 24 4
gpt4 key购买 nike

我正在尝试将 SELECT 语句与 INSERT INTO 命令一起使用。如果没有一个小问题,一切都会很好:表的某些字段被定义为 real[] 但我的输入是 numeric。因此,问题:

PostgreSQL 中是否有一个函数可以根据单个数字输入创建一个实型数组(只有一个元素)?

我的设置是这样的:

tempLogTable(..., logValue NUMERIC, ...)
finalLogTable(..., logValues REAL[], ...)

想法是使用INSERT INTO ... SELECT ... 将元组从tempLogTable 插入到finalLogTable。不幸的是,由于各种原因,给出了数据类型,我暂时不想更改它们(不要破坏任何东西)。

我正在使用 PostgreSQL 9.2。

最佳答案

SELECT ARRAY[thenumeric::real] FROM the_table;

SELECT ARRAY[thenumeric]::real[] FROM the_table;

对于单元素数组,它们并没有什么不同。

realnumeric 没有的限制。特别是,比较 real 值是否相等并不可靠;相反,您应该比较两个数字的差异小于一个小的(有点特定于任务的)数量。它也不能表示像 numeric 那样大或小的值。参见 the floating point guide关于比较 float 的其他信息。当它们被包裹在数组中时,这将很难做到。

就您描述的目的而言,听起来您只是在收集统计数据或历史数据,这不会成为问题。通常只会在人们尝试编写时才会出现问题:

WHERE some_real = some_other_real

这将导致令人惊讶和意外的行为。

按照说明,您应该可以使用 INSERT INTO ... SELECT

关于arrays - 如何从 INSERT 命令的非数组字段中获取数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16861523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com