29

当未提供数组的大小时,将元素添加到数组的最佳方法是什么?

array_append就是我能想到的:

UPDATE table SET array = array_append((SELECT array FROM table WHERE ...), 'element') WHERE ...;

array_length就是我能想到的:

UPDATE table SET array[array_length((SELECT array FROM table WHERE ...), 1)+1] = element;
4

1 回答 1

55

最简单的事情是:

update table
set array = array_append(array, 'element')
where ...

或者也许使用||运算符

update table
set array = array || 'element'
where ...

这两者都相当于更常见set n = n + 11的数字。根据所涉及的类型,您可能需要||通过包含类型转换来消除您所指的运算符的歧义:

update table
set array = array || 'element'::text
where ...

以便 PostgreSQL 知道您想要的是array || element版本||而不是array || array版本。感谢ak5让我注意到这一点。

于 2012-06-13T04:41:53.067 回答