schema:fruit_schema
表格:fruit_table
。
我在my_column列的单元格中有此字符串。
x:y。是我不感兴趣的文字
<Item>
<Name>First</Name>
<Subject>x:y. Food: Apple. x:y. </Subject>
</Item>
<Item>
<Name>Second</Name>
<Subject>x:y. x:y. Food: Apple. Type: Red. x:y. x:y.</Subject>
</Item>
我想在第一项中添加'类型:红色'。到目前为止,我已经写了这个查询:
DO
$$
DECLARE
oldItem varchar := 'Food: Apple.';
newItem varchar;
BEGIN
newItem = 'Food: Apple. Type: Red.';
UPDATE
fruit_schema.fruit_table AS profile
SET
my_column = REPLACE(my_column, oldItem, newItem)
WHERE
profile.my_column ILIKE '%First%</Item>%';
END$$;
但是,这是我的输出:
<Item>
<Name>First</Name>
<Subject>x:y. Food: Apple. Type: Red. x:y. </Subject>
</Item>
<Item>
<Name>Second</Name>
<Subject>x:y. x:y. Food: Apple. Type: Red. Type: Red. x:y. x:y.</Subject>
</Item>
第一个项目正确更新,但是第二个项目被替换为重复的“类型:红色”。无论如何,我可以将这条巨大的琴弦分别分为第一和第二项吗?我只想处理第一个子字符串,从<Name>First</Name>
到</Item>
我想对我要处理的其他所有项目执行此操作。如果可能的话,我希望避免手动计算项目中的字符数。
schema:fruit_schema表:fruit_table。我在my_column列的单元格中有此字符串。 x:y。是我对