我在 PostgreSQL 数据库中有一些列是数组。如果该值不存在,我想在其中添加一个新值(在 UPDATE 中),否则,不要添加任何内容。我不想覆盖数组的当前值,而只是向其中添加元素。
是否可以在查询中执行此操作,或者我需要在函数中执行此操作?我正在使用 PostgreSQL。
最佳答案
对于整数数组 (integer[]
),这应该像这个示例一样简单:
UPDATE tbl SET col = col || 5
WHERE (5 = ANY(col)) IS NOT TRUE;
WHERE
子句如下:
WHERE 5 <> ALL(col)
也会捕获空数组 '{}'::int[]
的情况,但如果 NULL
值作为数组元素出现,则会失败。
如果您的数组从不包含 NULL 作为元素,请考虑实际 array operators ,可能由 GIN 索引支持。
UPDATE tbl SET col = col || 5
WHERE NOT col @> '{5}';
参见:
关于sql - 更新 PostgreSQL 数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098849/