TRANSLATE 関数
文字式内の特定の文字を置き換えます。
| 返されるデータの種類: | STRING、VARCHAR |
|---|
構文
引数
expression
文字列に評価されるか強制変換できる有効な式を指定します。expressionには元の文字値が含まれます。
| データの種類 | CHAR、NCHAR、NVARCHAR、VARCHAR |
|---|
to-characters
TRANSLATEで代替文字として使用する文字を指定します。
| データの種類 | CHAR、NCHAR、NVARCHAR、VARCHAR |
|---|
from-characters
TRANSLATEで置換する文字を指定します。
| データの種類 | CHAR、NCHAR、NVARCHAR、VARCHAR |
|---|
詳細
to-charactersとfrom-charactersの値は、個々の文字ごとに対応しています。たとえば、TRANSLATEでは、from-charactersの最初の文字がto-charactersの最初の文字に変更されます。to-charactersの文字数がfrom-charactersの文字数より少ない場合、TRANSLATEはfrom-charactersの余った文字を空白に変更します。to-charactersの文字数がfrom-charactersの文字数より多い場合、TRANSLATEはto-charactersの余った文字を無視します。
比較
TRANSTRN関数は、置換文字列にゼロの長さを使用できるという点でTRANWRD関数と異なります。TRANWRDでは、置換文字列の長さがゼロ場合はかわりに1つの空白を使用します。
TRANSLATE関数は、ユーザーが指定したすべての文字を別の文字に変換します。TRANSLATEは1回の呼び出しで複数の文字をスキャンできます。ただし、このスキャンを実行すると、TRANSLATEは文字列に含まれる個々のすべての文字を検索します。つまり、target文字列内の文字がsource文字列内に見つかった場合、その文字は対応する置換文字列内の文字に置き換えられます。
TRANWRD関数は、単語(または文字のパターン)をスキャンし、それらの単語を2番目の単語(または文字のパターン)で置き換える点でTRANSLATEとは異なります。
例
次のステートメントは、TRANSLATE関数を示しています。
proc cas;
a=translate('XYZW', 'AB', 'VW');
print "a=" a;
run;
次の出力がSASログに書き込まれます。
a=XYZB
proc cas;
string1='AABBAABABB';
a=translate(string1, '12', 'AB');
print "a=" a;
run;
次の出力がSASログに書き込まれます。
a=1122112122