TRANSLATE (Transact-SQL)
Aplica-se a: SQL Server 2017 (14.x) e posteriores Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Retorna a cadeia de caracteres fornecida como um primeiro argumento após a conversão de alguns caracteres especificados no segundo argumento em um conjunto de caracteres de destino especificado no terceiro argumento.
Sintaxe
TRANSLATE ( inputString, characters, translations )
Argumentos
inputString
A expressão da cadeia de caracteres a ser pesquisada. inputString pode ser qualquer tipo de dados de caractere (nvarchar, varchar, nchar, char).
caracteres
Uma expressão de cadeia de caracteres que contém caracteres que devem ser substituídos. caracteres pode ser qualquer tipo de dados de caractere.
translations
Uma expressão de cadeia de caracteres que contém os caracteres de substituição. translations deve ser do mesmo tipo de dados e comprimento de characters.
Tipos de retorno
Retorna uma expressão de caractere do mesmo tipo de dados que inputString, em que os caracteres do segundo argumento são substituídos pelos caracteres correspondentes do terceiro argumento.
Comentários
TRANSLATE
retornará um erro se as expressões characters e translations tiverem tamanhos diferentes. TRANSLATE
retornará NULL se qualquer um dos argumentos for NULL.
O comportamento da função TRANSLATE
é semelhante ao uso de várias funções REPLACE. TRANSLATE
, no entanto, não substitui qualquer caractere individual em inputString
mais de uma vez. Um valor no parâmetro characters
pode substituir vários caracteres em inputString
.
Isso é diferente do comportamento de várias funções REPLACE
, pois cada chamada de função substitui todos os caracteres relevantes, mesmo que eles tenham sido substituídos por uma chamada de função REPLACE
aninhada anteriormente.
TRANSLATE
sempre reconhece a ordenação SC. Para obter mais informações sobre agrupamentos, confira Suporte a agrupamentos e a Unicode.
Exemplos
a. Substituir chaves e colchetes por chaves normais
A seguinte consulta substitui chaves e colchetes na cadeia de entrada por parênteses:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
Veja a seguir o conjunto de resultados.
2*(3+4)/(7-2)
Chamadas equivalentes para REPLACE
Na instrução SELECT a seguir, você verá grupo de quatro chamadas aninhadas para a função REPLACE. Esse grupo é equivalente a uma chamada feita para a função TRANSLATE no SELECT anterior:
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
B. Converter pontos GeoJSON em WKT
GeoJSON é um formato de codificação de uma variedade de estruturas de dados geográficos. Com a função TRANSLATE
, os desenvolvedores podem converter com facilidade pontos GeoJSON no formato WKT e vice-versa. A seguinte consulta substitui chaves e colchetes na entrada por chaves normais:
SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;
Veja a seguir o conjunto de resultados.
Point | Coordenadas |
---|---|
(137.4 72.3) | [137.4, 72.3] |
C. Use a função TRANSLATE
SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;
Veja a seguir o conjunto de resultados.
Traduzido | Substituído |
---|---|
bcddef | ddddef |