将数组连接到现有的 postgresql 数组

concatenate an array to existing postgresql array

我有一个 postgresql 数据库,其中每一行都有一个现有的整数数组。我想将每一行的现有数组与一个新数组连接起来。我根据文档 (http://www.postgresql.org/docs/9.3/static/functions-array.html) 尝试了以下操作,但这些都不起作用:

db=> update useradds set deals=array_append(deals, {4, 5});
ERROR:  syntax error at or near "{"
LINE 1: update useradds set deals=array_append(deals, {4, 5});
                                                      ^
db=> update useradds set deals=array_cat(deals,  {6,7});
ERROR:  syntax error at or near "{"
LINE 1: update useradds set deals=array_cat(deals,  {6,7});
                                                    ^
db=> update useradds set deals=array_cat(deals, {6,7});
ERROR:  syntax error at or near "{"
LINE 1: update useradds set deals=array_cat(deals, {6,7});
                                                   ^

db=> update useradds set deals=array_cat(deals,{6,7} );
ERROR:  syntax error at or near "{"
LINE 1: update useradds set deals=array_cat(deals,{6,7} );
                                                  ^
db=> update useradds set deals=array_cat(deals,{6} );
ERROR:  syntax error at or near "{"
LINE 1: update useradds set deals=array_cat(deals,{6} );
                                                  ^
db=> update useradds set deals=deals||{6,7};
ERROR:  syntax error at or near "{"
LINE 1: update useradds set deals=deals||{6,7};
                                         ^
db=> update useradds set deals = deals || {6,7};
ERROR:  syntax error at or near "{"

我是 运行 v. 9.3.5。这些电话有什么问题?谢谢。

您不能将数组输入为 {6,7}。有两种可能:

SELECT ARRAY[6,7];
SELECT '{6,7}'::int[]; -- **literal** casted as int array

当您可以连接两个数组时,您必须使用 array_cat 函数或 || 运算符:

postgres=# SELECT array_cat(ARRAY[1,2], ARRAY[3,4]);
 array_cat 
-----------
 {1,2,3,4}
(1 row)

postgres=# SELECT ARRAY[1,2] || ARRAY[3,4];
 ?column?  
-----------
 {1,2,3,4}
(1 row)

http://www.postgresql.org/docs/9.4/static/arrays.html