回答:
postgresqlのreplace関数を使用したい場合:
replace(string text, from text, to text)
例えば :
UPDATE <table> SET <field> = replace(<field>, 'cat', 'dog')
ただし、これは文字列から文字列への置換になるため、「カテゴリ」は「ドゴゴリー」になることに注意してください。regexp_replace関数は、置き換えたいものに対してより厳密な一致パターンを定義するのに役立ちます。
regexp_replace
より厳密な置換マッチングが必要な場合、PostgreSQLのregexp_replace
関数はPOSIX正規表現パターンを使用してマッチングできます。構文はregexp_replace(source、pattern、replacement [、flags])です。
フラグを使用i
しg
、大文字と小文字を区別しないグローバルマッチングをそれぞれ使用します。また、\m
and \M
を使用して、それぞれ単語の最初と最後を一致させます。
正規表現の置換を実行する場合、通常、かなりの数の問題があります。猫を犬に置き換えるのがいかに簡単か見てみましょう。
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog');
--> Cat bobdog cat cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'i');
--> dog bobcat cat cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'g');
--> Cat bobdog dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'gi');
--> dog bobdog dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat', 'dog', 'gi');
--> dog bobcat dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat\M', 'dog', 'gi');
--> dog bobdog dog cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat\M', 'dog', 'gi');
--> dog bobcat dog cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat(s?)\M', 'dog\1', 'gi');
--> dog bobcat dog dogs catfish
それでも、少なくとも 1つの未解決の状態があります。たとえば、「Cat」で始まる文は、小文字の「dog」に置き換えられ、文の大文字化が解除されます。
詳細については、現在のPostgreSQL パターンマッチングドキュメントをご覧ください。
私の例では、おそらく最も安全なオプションは次のとおりです。
UPDATE table SET field = regexp_replace(field, '\mcat\M', 'dog', 'gi');
あなたはreplace
関数を使うことができます
UPDATE your_table SET field = REPLACE(your_field, 'cat','dog')
関数の定義は次のとおりです(ここから取得)。
replace(string text, from text, to text)
変更されたテキストを返します。このSQLフィドルをチェックすることもできます。
正規表現を使用して、列内の1つ以上の空白文字のすべてのインスタンスをアンダースコアに置き換える例を次に示します-
select distinct on (pd)
regexp_replace(rndc.pd, '\\s+', '_','g') as pd
from rndc14_ndc_mstr rndc;