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

语法

TRANSLATE( expression, characters_to_replace, characters_to_substitute )

参数

expression

要转换的表达式。

characters_to_replace

一个包含要替换的字符的字符串。

characters_to_substitute

一个字符串,其中包含要替换其他字符的字符。

返回类型

VARCHAR

示例

要替换字符串中的多个字符,请使用以下示例。

SELECT TRANSLATE('mint tea', 'inea', 'osin'); +-----------+ | translate | +-----------+ | most tin | +-----------+

以下示例使用 TICKIT 示例数据库的 USERS 表中的数据。有关更多信息,请参阅 示例数据库

要将列中所有值的 at(@)符号替换为句点,请使用以下示例。

SELECT email, TRANSLATE(email, '@', '.') as obfuscated_email FROM users LIMIT 10; +---------------------------------------+---------------------------------------+ | email | obfuscated_email | +---------------------------------------+---------------------------------------+ | Cum@accumsan.com | Cum.accumsan.com | | lorem.ipsum@Vestibulumante.com | lorem.ipsum.Vestibulumante.com | | non.justo.Proin@ametconsectetuer.edu | non.justo.Proin.ametconsectetuer.edu | | non.ante.bibendum@porttitortellus.org | non.ante.bibendum.porttitortellus.org | | eros@blanditatnisi.org | eros.blanditatnisi.org | | augue@Donec.ca | augue.Donec.ca | | cursus@pedeacurna.edu | cursus.pedeacurna.edu | | at@Duis.com | at.Duis.com | | quam@facilisisvitaeorci.ca | quam.facilisisvitaeorci.ca | | mi.lorem@nunc.edu | mi.lorem.nunc.edu | +---------------------------------------+---------------------------------------+

要将空格替换为下划线并去掉列中所有值的句点,请使用以下示例。

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 | +----------------+---------------+