PostgreSQLのREGEXP_REPLACE()が全部変換してくれない!

最初だけやんけ!

例えば全ての「あ」を「ア」にしたいときに以下のように REGEXP_REPLACE() を使ってみます。

SELECT REGEXP_REPLACE('あああいう','あ','ア'); -- → 「アああいう」

ところが、上記のように最初に見つけた文字しかリプレースしてくれません。REGEXP_REPLACE() では全てを置き換えてくれないのでしょうか?

そんなことないです!

実は第四引数があり、ここに正規表現のオプションフラグが書けます。

SELECT REGEXP_REPLACE('あああいう','あ','ア','g'); -- → 「アアアいう」

この g フラグは、正規表現で書けば以下の末尾の部分になり、あるだけ繰り返すという指定になります。

$str =~ s/あ/ア/g;

参考にさせていただいたサイト