更新PostgreSQL数组中的值

时间:2011-11-11 19:20:42

标签: sql arrays postgresql

我在PostgreSQL数据库中有一些列是数组。如果值不存在,我想在其中添加一个新值(在UPDATE中),否则,不要添加任何值。我不想覆盖数组的当前值,只是添加元素。

可以在查询中执行此操作,还是需要在函数内执行此操作?我正在使用PostgreSQL。

1 个答案:

答案 0 :(得分:9)

对于整数数组(integer[]),这应该与此示例一样简单:

UPDATE tbl SET col = col || 5
WHERE  (5 = ANY(col)) IS NOT TRUE;

WHERE条款,如:

WHERE  5 <> ALL(col)

也会捕获空数组'{}'::int[]的情况,但如果NULL值显示为数组的元素,则会失败。

如果您的数组永远不会包含NULL作为元素,请考虑可能由GIN索引支持的实际array operators

UPDATE tbl SET col = col || 5
WHERE  NOT col @> '{5}';

请参阅: