

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# TRANSLATE 函數
<a name="TRANSLATE"></a>

對於給定的表達式，以指定的替換值取代所有出現的指定字元。現有字元依位置映射至 *characters\_to\_replace* 和 *characters\_to\_substitute* 引數中的替換字元。如果 *characters\_to\_replace* 引數中指定的字元數比 *characters\_to\_substitute* 引數更多，傳回值中會省略 *characters\_to\_replace* 引數中額外的字元。

TRANSLATE 類似於 [REPLACE 函數](REPLACE.md) 和 [REGEXP\_REPLACE 函數](REGEXP_REPLACE.md)，但 REPLACE 會將一整個字串替換成另一個字串，REGEXP\_REPLACE 可讓您在字串中搜尋規則表達式模式，而 TRANSLATE 會進行多次單一字元替換。

如果任何引數為 Null，則傳回值為 NULL。

## 語法
<a name="TRANSLATE-synopsis"></a>

```
TRANSLATE ( expression, characters_to_replace, characters_to_substitute )
```

## 引數
<a name="TRANSLATE-arguments"></a>

 *運算式*   
要轉換的表達式。

 *characters\_to\_replace*   
包含要取代之字元的字串。

 *characters\_to\_substitute*   
包含替換字元的字串。

## 傳回類型
<a name="TRANSLATE-return-type"></a>

VARCHAR

## 範例
<a name="TRANSLATE-examples"></a>

下列範例取代字串中的幾個字元：

```
select translate('mint tea', 'inea', 'osin');

translate
-----------
most tin
```

下列範例對某欄的所有值，以點取代 at 符號 (@)：

```
select email, translate(email, '@', '.') as obfuscated_email
from users limit 10;

email                                           obfuscated_email
-------------------------------------------------------------------------------------------
Etiam.laoreet.libero@sodalesMaurisblandit.edu   Etiam.laoreet.libero.sodalesMaurisblandit.edu
amet.faucibus.ut@condimentumegetvolutpat.ca     amet.faucibus.ut.condimentumegetvolutpat.ca
turpis@accumsanlaoreet.org	                turpis.accumsanlaoreet.org
ullamcorper.nisl@Cras.edu	                ullamcorper.nisl.Cras.edu
arcu.Curabitur@senectusetnetus.com              arcu.Curabitur.senectusetnetus.com
ac@velit.ca	                                ac.velit.ca
Aliquam.vulputate.ullamcorper@amalesuada.org    Aliquam.vulputate.ullamcorper.amalesuada.org
vel.est@velitegestas.edu                        vel.est.velitegestas.edu
dolor.nonummy@ipsumdolorsit.ca                  dolor.nonummy.ipsumdolorsit.ca
et@Nunclaoreet.ca                               et.Nunclaoreet.ca
```

 下列範例對某欄的所有值，以點底線取代空格並剔除點：

```
select city, translate(city, ' .', '_') from users
where city like 'Sain%' or city like 'St%'
group by city
order by city;

city            translate
--------------+------------------
Saint Albans     Saint_Albans
Saint Cloud      Saint_Cloud
Saint Joseph     Saint_Joseph
Saint Louis      Saint_Louis
Saint Paul       Saint_Paul
St. George       St_George
St. Marys        St_Marys
St. Petersburg   St_Petersburg
Stafford         Stafford
Stamford         Stamford
Stanton          Stanton
Starkville       Starkville
Statesboro       Statesboro
Staunton         Staunton
Steubenville     Steubenville
Stevens Point    Stevens_Point
Stillwater       Stillwater
Stockton         Stockton
Sturgis          Sturgis
```