gpt4 book ai didi

arrays - 如何使用 VALUES 接受数组到 CTE,然后作为单独的记录插入

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

PostgreSQL 11.1

我想在 PostgreSQL 中做类似的事情,但不知道如何读取数组或如何从数组中插入。我卡住了。

WITH _in (name, cash, checks) AS (
VALUES (UPPER($1), ARRAY[]::numeric(10,2), ARRAY[]::numeric(10,2)
)
INSERT INTO payments(name, cash, checks)
SELECT n.name, n.cash, n.checks
FROM _in n;

也就是说,我需要 CTE 接受现金数组和支票数组——现金数组和支票数组彼此一对一并将其与单个名称值匹配。因此,我希望 INSERT INTO payments 实际上在 payments 表中执行以下插入操作:

record 0 :   name, cash[1], check[1]
record 1 : name, cash[2], check[2]
record 2 : name, cash[3], check[3]

等...

这可以做到吗?

TIA

最佳答案

使用unnest:

WITH _in (name, cash, checks) AS (
VALUES (UPPER($1), ARRAY[...]::numeric(10,2)[], ARRAY[...]::numeric(10,2)[])
)
INSERT INTO payments(name, cash, checks)
SELECT n.name, unnest(n.cash), unnest(n.checks)
FROM _in n;

请注意,您需要转换为数组 ::numeric(10,2)<b>[]</b>而不是“简单”的数字。

传递该值的具体方式取决于您使用的编程语言和框架。

关于arrays - 如何使用 VALUES 接受数组到 CTE,然后作为单独的记录插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58947254/

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