Função TRANSLATE
Para dada expressão, substitui todas as ocorrências dos caracteres especificados pelos substitutos especificados. Os caracteres existentes são mapeados aos caracteres de substituição pelas suas posições nos argumentos characters_to_replace e characters_to_substitute. Se mais caracteres estiverem especificados no argumento characters_to_replace que no argumento characters_to_substitute, os caracteres adicionais do argumento characters_to_replace serão omitidos do valor de retorno.
TRANSLATE é semelhante a Função REPLACE e Função REGEXP_REPLACE, exceto que REPLACE substitui uma string inteira por outra string e REGEXP_REPLACE permite que você pesquise uma string quanto a um padrão de expressão regular, enquanto TRANSLATE faz várias substituições de caracteres simples.
Se qualquer um dos argumentos for nulo, o retorno será NULL
.
Sintaxe
TRANSLATE( expression, characters_to_replace, characters_to_substitute )
Argumentos
- expressão
-
A expressão a ser traduzida.
- characters_to_replace
-
Uma string contendo os caracteres a serem substituídos.
- characters_to_substitute
-
Uma string contendo os caracteres a substituir.
Tipo de retorno
VARCHAR
Exemplos
Para substituir vários caracteres em uma string, use o exemplo a seguir.
SELECT TRANSLATE('mint tea', 'inea', 'osin');
+-----------+ | translate | +-----------+ | most tin | +-----------+
Os exemplos a seguir usam dados da tabela USERS do banco de dados de amostra TICKIT. Para ter mais informações, consulte Banco de dados de exemplo.
Para substituir o sinal (@) por um ponto final para todos os valores de uma coluna, use o exemplo a seguir.
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 | +---------------------------------------+---------------------------------------+
Para substituir espaços por sublinhados e remover pontos finais de todos os valores em uma coluna, use o exemplo a seguir.
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 | +----------------+---------------+