PostgresQL:循环整数[]并将当前元素插入到另一个表中

发布于 2024-10-23 20:42:53 字数 513 浏览 1 评论 0原文

我有一个函数,它采用名为 p_categories 的参数,类型为 smallint[]

如何查看 p_categories 并执行以下命令,其中 catp_categories 中当前的 smallint

INSERT INTO mytable (i_category) VALUES (cat)

也许是这样的(伪代码)?

FOR cat in SELECT p_categories
    INSERT INTO mytable (i_category) VALUES (cat)
END LOOP;

这给了我一个错误:“当 p_categories'{14,20}' 时,整数输入语法无效:“{14,20}”。

I have a function which takes a parameter named p_categories, of type smallint[].

How do I look through p_categories and execute the following command, where cat is the current smallint in p_categories?

INSERT INTO mytable (i_category) VALUES (cat)

Something like this (pseudocode) maybe?

FOR cat in SELECT p_categories
    INSERT INTO mytable (i_category) VALUES (cat)
END LOOP;

That gives me an error: "invalid input syntax for integer: "{14,20}" when p_categories is '{14,20}'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

负佳期 2024-10-30 20:42:53

我认为您正在寻找 unnest

INSERT INTO mytable (i_category)
SELECT unnest(p_categories);

unnest 数组函数只是将数组展开为其元素。

或者一个更具体的例子:

> create table t (i int not null);
> insert into t (i) select unnest(array[1,2]);
> select * from t;
 i 
---
 1
 2
(2 rows)

I think you're looking for unnest

INSERT INTO mytable (i_category)
SELECT unnest(p_categories);

The unnest array function just expands an array into its elements.

Or a more concrete example:

> create table t (i int not null);
> insert into t (i) select unnest(array[1,2]);
> select * from t;
 i 
---
 1
 2
(2 rows)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文