2017-03-06 19 views
1

PostgresSQLの部分文字列を置き換えたいと思います。たとえば、文字列 'XYZ_dog'、 'dogXYZcat' に "ABC_dog"、 'dogABCcat'、 'dogABC'、 'dogXYZ'Postgresの部分文字列を置換える方法

については 私が試した:

UPDATE my_table SET name = regexp_replace(name , '.*ABC.*', '.*XYZ.*', 'g') 

をそれは「に新しい名前を設定します。 XYZ。 '

答えて

0

パターン'。* 'はすべてに一致します。 ABC。 'は、ABC、ABCの前のすべてと一致していることを意味します。

交換するビットをそのままABCに変更します。また、。*を置換えから削除します。

UPDATE my_table SET name = regexp_replace(name , 'ABC', 'XYZ', 'g') 
+2

あなたがしている場合、私は 'REGEXP_REPLACE()'ですべてを使用してのポイントが表示されません正規表現を使ってパターンにマッチさせることはしません。単に代わりにプレーンな 'REPLACE()'を使用してください。 –

5

最も簡単な解決策はreplace()機能を使用することです:

UPDATE my_table SET name = replace(name , 'ABC', 'XYZ'); 

これはあなたのテーブルにすべての行を置換すること、しかし、覚えておいてください。ほとんどの行は交換したいパターンを持っていない限り、あなたは最初に問題のある部分文字列をテストするほうが良いでしょう:

UPDATE my_table SET name = replace(name , 'ABC', 'XYZ') 
WHERE position('ABC' in name) > 0; 
関連する問題