如何在PostgreSQL中删除数组元素? [英] How to remove elements of array in PostgreSQL?

查看:1725
本文介绍了如何在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中删除数组元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆