更新 PostgreSQL 数组中的值

问题描述 投票:0回答:1

我在 PostgreSQL 数据库中有一些列是数组。如果该值不存在,我想在其中添加一个新值(在

UPDATE
中),否则,不要添加任何内容。我不想覆盖数组的当前值,只想将元素添加到其中。

是否可以用普通 SQL 执行此操作,或者我需要一个函数吗?我正在使用 PostgreSQL。

sql arrays postgresql sql-update
1个回答
13
投票

这应该像整数数组的示例一样简单 (

integer[]
):

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

一个

WHERE
子句,例如:

WHERE  5 <> ALL(col)

也会捕获空数组

'{}'::int[]
的情况,但如果
NULL
值作为数组元素出现,则会失败。

如果您的数组从不包含 NULL 作为元素,请考虑实际的数组运算符,可能由 GIN 索引支持。

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

参见:

© www.soinside.com 2019 - 2024. All rights reserved.