更新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}';

看到:

> Check if value exists in Postgres array
> Can PostgreSQL index array columns?

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...