我有一个 PostgreSQL 表,其中包含一个带有字符串数组的列,我使用 SQLAlchemy 来管理它。 我想构建一个“upsert”函数,因此如果特定单元格包含示例
{'a', 'b'}
,并且我尝试使用 'b'
更新它,则输出应该仍然是 {'a', 'b'}
。
可以吗?
无论哪种方式,您都必须删除合并值的重复项,请考虑编写自己的纯 sql 函数,如下所示:
create function public.array_unique(a anyarray) returns anyarray
language sql
as
$$
select array (
select distinct v from unnest(a) as b(v)
)
$$;
然后就可以查看结果了
select public.array_unique(array ['a', 'b'] || array ['a'])
然后调整它
insert into distributors (did, dname)
values (5, '{a,b}'), (6, '{a}')
on conflict (did) do update set dname = public.array_unique(dname || excluded.dname);