En SQL Server, T-SQL TRANSLATE() La función devuelve la cadena proporcionada como primer argumento después de que algunos caracteres especificados en el segundo argumento se traducen a un conjunto de caracteres de destino especificado en el tercer argumento.
Es similar al REPLACE() función, pero con algunas diferencias importantes.
El TRANSLATE() la función requiere 3 argumentos; la cadena de entrada, los caracteres que se reemplazarán y los caracteres que se reemplazarán.
Sintaxis
La sintaxis es así:
TRANSLATE ( inputString, characters, translations)
Donde cadena de entrada es la cadena que contiene los caracteres a reemplazar.
Los personajes argumento especifica qué caracteres deben ser reemplazados.
Las traducciones El argumento especifica con qué se deben reemplazar esos caracteres.
Ejemplo 1:uso básico
He aquí un ejemplo de cómo funciona:
SELECT TRANSLATE('Cat', 'at', 'ow') AS Result; Resultado:
+----------+ | Result | |----------| | Cow | +----------+
Entonces, en este ejemplo, el a y t los caracteres fueron reemplazados con o y w .
En este caso, el REPLACE() La función habría producido el mismo resultado. Aquí están las dos funciones una al lado de la otra:
SELECT
TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE',
REPLACE('Cat', 'at', 'ow') AS 'REPLACE';
Resultado:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cow | +-------------+-----------+
En este caso, el resultado de ambas funciones es el mismo, pero por razones diferentes.
Esto es lo que hizo cada función:
TRANSLATE()reemplazadoayt(cada carácter individual)REPLACE()reemplazadoat(la cadena)
Ejemplo 2:Orden mixto
Este ejemplo demuestra dónde TRANSLATE() difiere de REPLACE() . En este ejemplo, cambio el orden de los caracteres a reemplazar, así como los caracteres a reemplazar:
SELECT
TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE',
REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';
Resultado:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cat | +-------------+-----------+
En este caso solo el TRANSLATE() entró en vigor la función. Esto se debe a que esta función recorre cada carácter uno por uno. El REPLACE() Por otro lado, la función busca la cadena completa, exactamente en el mismo orden.
Ejemplo 3:un ejemplo más poderoso
El siguiente ejemplo se basa en la documentación de Microsoft para TRANSLATE() función. Demuestra un escenario donde esta función tiene un beneficio significativo sobre el REPLACE() función:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;
Resultado:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+
Para obtener el resultado equivalente usando REPLACE() función, tendríamos que hacer esto:
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
) AS Result;
Resultado:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+