当未提供数组大小时,将元素添加到数组的最佳方法是什么?
对于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;
发布于 2012-06-13 12:41:53
最简单的事情是:
update table
set array = array_append(array, 'element')
where ...
或者使用||
operator
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让我注意到这一点。
https://stackoverflow.com/questions/11007800
复制相似问题