本文介绍了如何在PostgreSQL中删除数组元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否可以从数组中删除多个元素?
删除元素Array1之前是:
Is it possible to remove multiple elements from an array?Before removing elements Array1 is :
{1,2,3,4}
包含要删除的某些元素的Array2:
Array2 that contains some elements I wish to remove:
{1,4}
我想得到:
{2,3}
如何操作?
推荐答案
使用 unnest()
使用 array_agg()
,例如:
with cte(array1, array2) as (
values (array[1,2,3,4], array[1,4])
)
select array_agg(elem)
from cte, unnest(array1) elem
where elem <> all(array2);
array_agg
-----------
{2,3}
(1 row)
如果经常需要此功能,请定义简单的功能:
If you often need this functionality, define the simple function:
create or replace function array_diff(array1 anyarray, array2 anyarray)
returns anyarray language sql immutable as $$
select coalesce(array_agg(elem), '{}')
from unnest(array1) elem
where elem <> all(array2)
$$;
您可以将函数用于任何数组,而不仅限于 int []
:
You can use the function for any array, not only int[]
:
select array_diff(array['a','b','c','d'], array['a','d']);
array_diff
------------
{b,c}
(1 row)
这篇关于如何在PostgreSQL中删除数组元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!