はじめに
TRANSLATE関数を使うことで、文字列を別の文字列に置換できます。また、置換後の文字列に空文字(”)を指定することで、データから文字や空白を削除することが可能です。
構文
1 |
TRANSLATE ( string_to_replace , from_string , to_string ); |
パラメータ | 説明 |
---|---|
string_to_replace | 置換を行いたい対象のデータ(列あるいは文字列) |
from_string | 置換対象の文字列 |
to_string | 置換後の文字列 |
補足
・from_stringに指定した文字列を先頭から1文字ずつ処理します。・string_to_replaceから検知されたfrom_string内の文字は、位置が対応するto_stringの文字へ置換されます。
使用例
基本的な使用
以下のように置換が行えます。
1 2 3 4 5 |
dbadmin=> SELECT TRANSLATE('aiueo','aiueo','あいうえお'); TRANSLATE ------------ あいうえお (1 row) |
TRANSLATE関数とREPLACE関数の違い
ここでは、「文字列置換する関数」という点で類似しているREPLACE関数との違いを説明します。REPLACE関数の場合
1 2 3 4 5 |
dbadmin=> SELECT REPLACE('oeuia','aiueo','あいうえお'); REPLACE --------- oeuia (1 row) |
REPLACE関数は、第二引数に指定した文字列を単語単位で走査するため、第一引数の中に完全一致する文字列がない場合は置換を行いません。
TRANSLATE関数の場合
1 2 3 4 5 |
dbadmin=> SELECT TRANSLATE('oeuia','aiueo','あいうえお'); TRANSLATE ------------ おえういあ (1 row) |
TRANSLATE関数では、第二引数に指定した文字列の先頭から1文字ずつ走査し、位置が対応する第三引数へ置換します。
そのため、置換したい文字が第一引数の中でランダムに並んでいても、一度に置換できます。
参考情報
TRANSLATEhttps://docs.vertica.com/23.4.x/en/sql-reference/functions/data-type-specific-functions/string-functions/translate/
REPLACE
https://docs.vertica.com/23.4.x/en/sql-reference/functions/data-type-specific-functions/string-functions/replace/
検証バージョンについて
この記事の内容はVertica 23.4で確認しています。更新履歴
2023/12/21 Vertica23.4用に検証バージョンを修正2019/10/10 本記事を公開