【PostgreSQL】文字を置換する、複数置換する(replace、translate)

2021年8月8日PostgreSQL構文

文字を置換する、複数置換する方法

文字を置換するにはREPLACEと、TRANSLATEの二つの方法があります。

REPLACEは単語単位で置換するのに対し、TRANSLATEは文字列の先頭から1文字ずつ置換するという違いがあります。

 

 

文字を置換する(replace関数)の構文

文字を置換するにはreplace関数を使用します。

-- 文字を置換する構文
replace( 文字列,検索文字列,置換文字列 ) 

 

 

文字を一つ置換する(replace関数)の使用例

replace関数の使用例です。

-- 'everywhere'から'e'を'E'に置換する
select replace('everywhere','e','E');  --"EvErywhErE"

-- 'ABCDE'から'ABC'を'abc'に置換する
select replace('ABCDE','ABC','abc');   --"abcDE"

-- 検索文字列がない場合、エラーにはならずそのままの文字が返る
select replace('ABCDE','XYZ','abc');   --"ABCDE"

 

 

文字を複数置換する(translate関数)の構文

文字を複数置換するには、translate関数を使用します。

-- 文字を置換する構文
translate( 文字列,検索文字列,置換文字列 ) 

-- 検索文字列は、1文字ずつ順番に置換文字列に置換する
-- 次の文は、aをAに、dをDに、gをGに置換することを示す
translate( 文字列,'adg','ADG' ) ;

 

 

文字を複数置換する(translate関数)の使用例

translate関数の使用例です。

-- 'everywhere'から'e'を'E'に、'r'を'R'に置換する
select translate('everywhere','er','ER');  --"EvERywhERE"

-- 'ABCDEFGHI'から'a'を'A'に、'd'を'D'に、'g'を'G'に置換する
select translate('abcdefghi','adg','ADG');   --"AbcDefGhi"

-- 検索文字列がない場合、エラーにはならずそのままの文字が返る
select translate('ABCDE','XYZ','abc');   --"ABCDE"

 

 

関連記事(文字列操作)

文字列の結合、nullの結合

改行コードで結合、置換する

文字数のカウント(length)、バイト数を取得する

文字の切り取り(Left、Right、Substring)

検索文字位置の取得(strpos)

全角半角スペースを除去する(trim)

upper(小文字を大文字に変換する)

大文字小文字を変換する、区別せず比較する

前0埋め、後ろ0埋め(lpad、rpad)

Nullの時に別の値に置き換える