我有一个带有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]?
答案 0 :(得分:2)
如果你想从数组中删除元素'second tag'
,你可以这样做:
select
page_id,
array(select arr from unnest(tags) as arr where arr <> 'second tag')
from test_page;
可能有更有效的方法来做到这一点,还不知道。