如何删除 PostgreSQL 中的数组元素?

新手上路,请多包涵

是否可以从数组中删除 多个 元素?在删除元素 Array1 之前是:

 {1,2,3,4}

Array2 包含我希望删除的一些元素:

 {1,4}

我想得到:

  {2,3}

如何操作?

原文由 k.xf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 803
1 个回答

当您处理 bigint/int8 数字并希望保持顺序时,您可以使用此功能:

 CREATE OR REPLACE FUNCTION arr_subtract(int8[], int8[])
  RETURNS int8[] AS
$func$
SELECT ARRAY(
    SELECT a
    FROM   unnest($1) WITH ORDINALITY x(a, ord)
    WHERE  a <> ALL ($2)
    ORDER  BY ord
    );
$func$  LANGUAGE sql IMMUTABLE;

我从以下类似问题的答案中得到了这个解决方案: https ://stackoverflow.com/a/8584080/1544473

原文由 Adé 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进