0

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

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

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

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

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

(1 row)

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

是否有一个通配符可以替换 [2] 将在任何位置执行替换?

4

1 回答 1

2

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

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

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

于 2013-08-29T19:31:45.693 回答