No SQL Server, o T-SQL
TRANSLATE() A função retorna a string fornecida como um primeiro argumento depois que alguns caracteres especificados no segundo argumento são convertidos em um conjunto de caracteres de destino especificado no terceiro argumento. É semelhante ao
REPLACE() função, mas com algumas diferenças importantes. O
TRANSLATE() função requer 3 argumentos; a string de entrada, os caracteres a serem substituídos e os caracteres a serem substituídos. Sintaxe
A sintaxe fica assim:
TRANSLATE ( inputString, characters, translations)
Onde inputString é a string que contém os caracteres a serem substituídos.
Os caracteres argumento especifica quais caracteres devem ser substituídos.
As traduções argumento especifica com o que esses caracteres devem ser substituídos.
Exemplo 1 – Uso básico
Veja um exemplo de como funciona:
SELECT TRANSLATE('Cat', 'at', 'ow') AS Result; Resultado:
+----------+ | Result | |----------| | Cow | +----------+
Portanto, neste exemplo, o
a e t os caracteres foram substituídos por o e w . Neste caso, o
REPLACE() função teria produzido o mesmo resultado. Aqui estão as duas funções lado a lado:SELECT
TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE',
REPLACE('Cat', 'at', 'ow') AS 'REPLACE';
Resultado:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cow | +-------------+-----------+
Nesse caso, o resultado para ambas as funções é o mesmo, mas por motivos diferentes.
Veja o que cada função fez:
TRANSLATE()substituiuaet(cada personagem individual)REPLACE()substituídoat(a cadeia)
Exemplo 2 - Pedido Misto
Este exemplo demonstra onde
TRANSLATE() difere de REPLACE() . Neste exemplo, altero a ordem dos caracteres a serem substituídos, bem como os caracteres a serem substituídos:SELECT
TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE',
REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';
Resultado:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cat | +-------------+-----------+
Neste caso apenas o
TRANSLATE() função entrou em vigor. Isso ocorre porque essa função passa por cada caractere um por um. O REPLACE() A função, por outro lado, procura a string inteira, exatamente na mesma ordem. Exemplo 3 – Um exemplo mais poderoso
O exemplo a seguir é baseado na documentação da Microsoft para o
TRANSLATE() função. Ele demonstra um cenário em que esta função tem um benefício significativo sobre o REPLACE() função:SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;
Resultado:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+
Para obter o resultado equivalente usando o
REPLACE() função, precisaríamos fazer isso:SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
) AS Result;
Resultado:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+