replace関数

広告

replace関数は文字列の中に含まれる一部の文字列を他の文字列に変換するために使用します。書式は次の通りです。

replace(対象の文字列, 置換される文字列, 置換する文字列)

1番目の引数に指定した文字列の中に含まれる2番目の引数に指定した文字列を、3番目の引数に指定した文字列で置換します。2番目の引数に一致する文字列が対象の文字列に複数含まれる場合、全ての文字列が置き換えられます。

具体的には次のように使用します。

select replace('database', 'a', '-a-');    /* d-a-t-a-b-a-se */

このSELECT文では'database'に含まれる'a'を全て'-a-'に置換した結果を返します。

また下記のようにカラムを指定した場合は、カラムに格納されている値を小文字または大文字に変換します。

create table goods(id integer, name text);

select replace(name, 'before', 'after') from goods;

このSELECT文では「name」カラムに含まれる値を、値の中に'before'が含まれていた場合は'after'に変換して取得します。

サンプル

では実際に試してみます。

select replace('database', 'a', '-a-');

p12-1

'database'に含まれる'a'を全て'-a-'に置換した'd-a-t-a-b-a-se'を返します。

今度は次のようなデータが格納されたテーブルを対象にします。

p12-2

では「en」カラムに格納されている値の中に'e'が含まれていた場合、'E'に置換したものを取得してみます。

select en, replace(en, 'e', 'E') from dict;

p12-3

対象のカラムの値に'e'が含まれていた場合、それを'E'に置換した結果を取得できました。

( Written by Tatsuo Ikura )