写真タグが2回追加されたpostgres DBで不良データを修正しようとしました。Postgres:文字列の2番目の文字列を削除します。
The trip is wonderful.<photo=2-1-1601981-7-1.jpg><photo=2-1-1601981-5-2.jpg>We enjoyed it very much.<photo=2-1-1601981-5-2.jpg><photo=2-1-1601981-7-1.jpg>
あなたが文字列で見ることができるように、写真のタグは既に追加されましたが、それらは再びテキストに追加されました。私は2番目の出現を取り除きたい:。最初の出現には特定の順序があり、それらを保持したい。
私は正規表現パターンを構築することができ機能を書いた:
CREATE OR REPLACE FUNCTION dd_trip_photo_tags(tagId int) RETURNS text
LANGUAGE sql IMMUTABLE
AS $$
SELECT string_agg(concat('<photo=',media_name,'>.*?(<photo=',media_name,'>)'),'|') FROM t_ddtrip_media WHERE tag_id=tagId $$;
これは、特定の写真タグの第二の発生をキャプチャします。 そして、私は第二の発生交換するregex_replaceのを使用:TAG_IDは= 332761 t_ddtrip_contentから 更新t_ddtrip_contentセット内容= REGEXP_REPLACE(コンテンツ、dd_trip_photo_tags(332761)を、 '')。
ただし、一致するタグはすべて削除されます。私は数日間オンラインで検索しましたが、これを修正する方法を見つけられませんでした。助けをお待ちしています。