"阵列推送"的Postgres数组追加和数组长度

22 arrays postgresql

当没有提供数组大小时,向数组添加元素的最佳方法是什么?

随着array_append这是我能想到的:

UPDATE table SET array = array_append((SELECT array FROM table WHERE ...), 'element') WHERE ...;
Run Code Online (Sandbox Code Playgroud)

随着array_length这是我能想到的:

UPDATE table SET array[array_length((SELECT array FROM table WHERE ...), 1)+1] = element;
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 43

最简单的事情是:

update table
set array = array_append(array, 'element')
where ...
Run Code Online (Sandbox Code Playgroud)

或者使用||运营商:

update table
set array = array || 'element'
where ...
Run Code Online (Sandbox Code Playgroud)

这两者都相当于set n = n + 11数字更常见.