TRANSLATE (Transact-SQL)
適用対象: SQL Server 2017 (14.x) 以降 Azure SQL データベース Azure SQL Managed Instance
最初の引数として指定した文字列を、2 番目の引数で指定したいくつかの文字を 3 番目の引数で指定した対象の文字セットに変換した後に、返します。
構文
TRANSLATE ( inputString, characters, translations )
引数
inputString
検索対象となる文字列式。 inputString には、任意の文字データ型 (nvarchar、varchar、nchar、char) を指定できます。
characters
置換対象の文字が含まれる文字列式。 characters には、任意の文字データ型を指定できます。
translations
置換文字が含まれる文字列式。 translations には、characters と同じデータ型および長さを指定する必要があります。
戻り値の型
2 番目の引数の文字が 3 番目の引数の一致する文字に置き換えられた、inputString と同じデータ型の文字式を返します。
解説
characters 式と translations 式の長さが異なる場合、TRANSLATE
はエラーを返します。 TRANSLATE
は、いずれかの引数が NULL の場合は NULL を返します。
TRANSLATE
関数の動作は、複数の REPLACE 関数を使用した場合と似ています。 ただし、TRANSLATE
では、inputString
内の個々の文字が複数回置き換えられることはありません。 characters
パラメーター内の 1 つの値が inputString
内の複数の文字を置き換えることはあります。
これは、複数の REPLACE
関数の動作とは異なります。関数を呼び出すごとに、前回の入れ子になった REPLACE
関数呼び出しによって置き換えられている場合であっても、関連するすべての文字が置き換えられるためです。
TRANSLATE
は常に SC 照合順序を認識しています。 補助照合順序の詳細については、照合順序と Unicode のサポートに関する記事を参照してください。
例
A. 角かっこと中かっこを通常のかっこで置き換える
次のクエリは、入力文字列の角かっこと中かっこを通常のかっこで置き換えます。
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
結果セットは次のとおりです。
2*(3+4)/(7-2)
REPLACE と同等の呼び出し
次の SELECT ステートメントには、4 つの入れ子になった REPLACE 関数の呼び出しのグループがあります。 このグループは、1 つ前の SELECT での TRANSLATE 関数に対する 1 回の呼び出しと同等です。
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
B. GeoJSON ポイントを WKT に変換する
GeoJSON は、いくつかの地理データ構造をエンコードするための形式です。 TRANSLATE
関数を使用すると、開発者は GeoJSON ポイントから WKT 形式への変換とその逆の変換に簡単に実行できます。 次のクエリによって、入力の角かっこと中かっこが、通常のかっこで置き換えられます。
SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;
結果セットは次のとおりです。
ポイント | 座標 |
---|---|
(137.4 72.3) | [137.4,72.3] |
C. TRANSLATE 関数を使用する
SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;
結果セットは次のとおりです。
変換後 | 置換後 |
---|---|
bcddef | ddddef |