您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从数组中删除一个非唯一值

从数组中删除一个非唯一值

根据我在dba.SE上找到的旧答案,并充分利用了它:

您可能会更进一步:

CREATE OR REPLACE FUNCTION f_array_remove_elem1(anyarray, anyelement)
  RETURNS anyarray LANGUAGE sql IMMUTABLE AS
'SELECT $1[:idx-1] || $1[idx+1:] FROM array_position($1, $2) idx';

函数将要删除的元素的值作为第二个参数。相应地使用多态伪类型anyelement使它适用于任何数组类型。

那么UPDATE简单的是:

UPDATE test_table
SET    test_array = f_array_remove_elem1(test_array, 'B')
WHERE  id = 1;

db <>在这里拨弄

当使用我的原始函数f_array_remove_elem()获取索引位置而不是元素值时,您可以不使用子查询

UPDATE test_table
SET    test_array = f_array_remove_elem(test_array, array_position(test_array, 'B'))
WHERE  id = 1;

甚至可能比我的新功能快一点。 并请注意,我的旧答案底部的较简单版本适用于Postgres 9.6。

其他 2022/1/1 18:44:56 有463人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶