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

Confira também