REPLACE( ) 関数
指定された文字列のすべてのインスタンスを新しい文字列で置き換えます。
構文
REPLACE(文字列, 元のテキスト, 新しいテキスト)
パラメーター
名前 | 種類 | 説明 |
---|---|---|
文字列 |
文字 |
文字が置き換えられる値。 |
元のテキスト |
文字 |
置き換える文字。検索は大文字と小文字を区別します。 |
新しいテキスト | 文字 | 元のテキストの値を置き換えるテキスト。 |
出力
文字。
例
基本的な例
"a12345efg" が返されます。
REPLACE("abcdefg","bcd","12345")
"Rd." が返されます。
REPLACE("Road","Road","Rd.")
"ac" が返されます。
REPLACE("abc","b","")
高度な例
指定された文字を削除する
REPLACE( ) 関数では、指定した文字列を空文字列("")で置き換えることによって、指定文字列をソース文字列から削除することもできます。
"1234 Scott" が返されます。
REPLACE("1234 Scott rd.", "rd.", "")
フィールド長の調整
新しいテキスト("ABC")が元のテキスト("X")より長い場合は、置換後の文字列のフィールド長が置換結果を収めることができるように自動的に拡張されます。
フィールド長が 3 文字から 5 文字に拡張されることで、"9ABC9" が返されます。
REPLACE("9X9", "X", "ABC")
フィールド長は、2 回目以降の置換では自動拡張されないため、すべての新しい文字を収めることができるほど十分に長くない場合には切り詰められます。
"9ABC9A" が返されます。
REPLACE("9X9", "X", "ABC")
切り詰められないようにするには、BLANKS( ) 関数またはリテラル スペースを使用して文字列の長さを大きくしておきます。
"9ABC9ABC" が返されます。
REPLACE("9X9X" + BLANKS(2), "X", "ABC")
REPLACE("9X9X" + " ", "X", "ABC")
結果の文字列が文字列より短くなる場合には、フィールド長を同じにするため、結果の文字列にスペースが追加されます。
"9X9 " が返されます。
REPLACE("9X9", "X", "ABC")
備考
機能の仕組み
REPLACE( ) 関数は既存の文字列のすべてのインスタンスを新しい文字列で置き換えます。
"1234 Scott Road" が返されます。
REPLACE("1234 Scott rd.", "rd.", "")
REPLACE( ) の使用に適する場面
REPLACE( ) 関数は、住所フィールドなどの書式が統一されていないデータ フィールドを正規化する場合や、編集が不十分なフィールドの無効な文字を置換する場合に使用します。重複の検査や、テーブルの結合または関連付けなどの操作を正確に実行するためには、正規化または標準化された書式のデータを必要とします。
大文字と小文字の区別
REPLACE ( ) 関数では大文字と小文字が区別されます。"RD." を元のテキストに指定する際、文字列内の値が小文字の場合は、一致が検出されないため、値は新しいテキストの値に置き換えられません。
文字列に大文字と小文字の両方が混在している可能性がある場合は、最初に UPPER( ) 関数を使用してすべての文字を大文字に変換します。
"1234 SCOTT ROAD" が返されます。
REPLACE(UPPER("1234 Scott rd."), "RD.", "ROAD")
不用意な置換が行われないようにする
REPLACE( ) 式を作成する際は、不用意な置換が行われないように、文字列内に存在し得る元のテキストのすべてのインスタンスを把握しておいてください。
"Richard" の最後の 2 文字が "rd" のため、"645 RichaRoad Road" が返されます。
REPLACE("645 Richard rd ", "rd", "Road")
元のテキストの値の前後にスペースを追加すると(" rd ")、名前に含まれる "rd" のインスタンスのように、前にスペースがないインスタンスは置換されないようになります。
"645 Richard Road" が返されます。
REPLACE("645 Richard rd ", "rd", "Road")