TRANSLATE 函數 - Amazon Redshift

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

TRANSLATE 函數

對於給定的表達式,以指定的替換值取代所有出現的指定字元。現有字元依位置映射至 characters_to_replacecharacters_to_substitute 引數中的替換字元。如果 characters_to_replace 引數中指定的字元數比 characters_to_substitute 引數更多,傳回值中會省略 characters_to_replace 引數中額外的字元。

TRANSLATE 類似於 REPLACE 函數REGEXP_REPLACE 函數,但 REPLACE 會將一整個字串替換成另一個字串,REGEXP_REPLACE 可讓您在字串中搜尋規則表達式模式,而 TRANSLATE 會進行多次單一字元替換。

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

Syntax (語法)

TRANSLATE ( expression, characters_to_replace, characters_to_substitute )

引數

運算式

要轉換的表達式。

characters_to_replace

包含要取代之字元的字串。

characters_to_substitute

包含替換字元的字串。

傳回類型

VARCHAR

範例

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

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