如何在任何位置删除/替换text []值

时间:2013-08-29 19:01:27

标签: arrays postgresql

我有一个带有text []字段的表:

     page_id      |                           tags
------------------+------------------------------------------------
    test_page     | {"first tag","second tag",zodd,"another tag"}

我想删除字段中的“第二个标记”值。

如果我指定这样的位置,我可以使用replace:

select replace(tags[2],'second tag'::text,'') from test_page;
 replace
---------

(1 row)

但标签可能位于1或3位置或任何位置(并且不限于此示例中的4个值)

我是否可以使用通配符来替换将在任何位置执行替换的[2]?

1 个答案:

答案 0 :(得分:2)

如果你想从数组中删除元素'second tag',你可以这样做:

select 
    page_id,
    array(select arr from unnest(tags) as arr where arr <> 'second tag')
from test_page;

可能有更有效的方法来做到这一点,还不知道。