如果我有
select arr_str from tabl1;
-> {'a', 'b'}
字符串
那么我如何将这个{'b','c','d'}
数组添加到列arr_str
中,以便得到以下结果
select arr_str from tabl1;
-> {'a', 'b', 'c', 'd'}
型
我不想SELECT列,创建一个新数组来更新,我只想使用UPDATE查询。
如果我有
select arr_str from tabl1;
-> {'a', 'b'}
字符串
那么我如何将这个{'b','c','d'}
数组添加到列arr_str
中,以便得到以下结果
select arr_str from tabl1;
-> {'a', 'b', 'c', 'd'}
型
我不想SELECT列,创建一个新数组来更新,我只想使用UPDATE查询。
4条答案
按热度按时间dy2hfwbg1#
我假设
arr_str
的类型是text[]
(尽管您没有为它们使用正确的格式,所以我可能是错的;如果是这种情况,您需要将值强制转换为text[]
)。如果要删除
arr_str
列中已存在的重复项,请使用以下语句:字符串
或者,当您要保留现有的重复时,请使用以下命令:
型
这两个语句都不会触及行,行无论如何都不会受到影响(看看
where not arr_str @> '{b,c,d}'
predicate )。这通常是最佳实践,并且在涉及触发器时几乎总是推荐的。http://rextester.com/GKS7382
7z5jn7bk2#
使用默认的pg安装,您可以合并两个阵列,||操作员:
字符串
但在这种情况下,你会得到副本。
为了避免它们,你可以将数组解嵌套到行集中并区分它:
型
如果你的值是整数,有一种更优雅的方法来获取uniq数组值,使用intarray contrib模块和uniq()函数:https://www.postgresql.org/docs/current/static/intarray.html
你可以使用以下命令添加这些整数数组函数:
型
8yparm6h3#
你可以concatenate数组,然后聚合不同的值:
字符串
tjrkku2a4#
试试这个代码:
字符串