sql - 更新 PostgreSQL 数组中的值

标签 sql arrays postgresql

我在 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/

相关文章:

sql - Sql中的AVG - float 问题

sql - 如何创建表的子集

arrays - 比较数组的 2 个字符串元素

PHP循环遍历数组从n到n-1个元素

postgresql - xlog - 知道两个数据库是否来自源

sql - 一起插入具有自增主键的行和相关行

sql - 需要将 LIMIT 更改为其他内容

sql - 在 Oracle 行的多个列上使用透视

c - 使用 fscanf() 从文本文件读取

json - 如何仅保留存在于键数组中的 Postgres jsonb 对象的属性?