TRANSLATE (Transact-SQL)
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance
Devuelve la cadena proporcionada como primer argumento después de que algunos caracteres especificados en el segundo argumento se hayan convertido en un conjunto de destino de caracteres especificado en el tercer argumento.
Sintaxis
TRANSLATE ( inputString, characters, translations )
Argumentos
inputString
Expresión de cadena en la que se va a buscar. inputString puede ser cualquier tipo de datos de carácter (nvarchar, varchar, nchar, char).
characters
Es una expresión de cadena que contiene caracteres que se deben reemplazar. characters puede ser cualquier tipo de datos de caracteres.
traducciones
Es una expresión de cadena que contiene los caracteres de sustitución. translations debe tener el mismo tipo de datos y la misma longitud que characters.
Tipos de valores devueltos
Devuelve una expresión de caracteres del mismo tipo de datos que inputString, donde se reemplazan los caracteres del segundo argumento con los caracteres coincidentes del tercer argumento.
Comentarios
La función TRANSLATE
devolverá un error si las expresiones characters y translations tienen longitudes diferentes. TRANSLATE
devolverá NULL si alguno de los argumentos es NULL.
El comportamiento de la función TRANSLATE
es equivalente a usar varias funciones REPLACE. Pero TRANSLATE
no reemplaza ningún carácter individual en inputString
más de una vez. Un valor único en el parámetro characters
puede reemplazar varios caracteres en inputString
.
Esto es diferente al comportamiento de varias funciones REPLACE
, ya que cada llamada de función reemplazaría todos los caracteres pertinentes, incluso si se hubieran reemplazado por una llamada de función REPLACE
anidada anterior.
TRANSLATE
siempre reconoce la intercalación de SC. Para obtener más información sobre las intercalaciones, vea Compatibilidad con la intercalación y Unicode.
Ejemplos
A. Reemplazar corchetes y llaves con llaves normales
En esta consulta se reemplazan corchetes y llaves en la cadena de entrada entre paréntesis:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
Este es el conjunto de resultados.
2*(3+4)/(7-2)
Llamadas equivalentes a REPLACE
En la siguiente instrucción SELECT, hay un grupo de cuatro llamadas anidadas a la función REPLACE. Este grupo es equivalente a la llamada realizada a la función TRANSLATE de la instrucción SELECT anterior:
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
B. Convertir puntos GeoJSON en WKT
GeoJSON es un formato para codificar una variedad de estructuras de datos geográficos. Con la función TRANSLATE
, los desarrolladores pueden convertir fácilmente los puntos GeoJSON a formato WKT y viceversa. En esta consulta se reemplazan corchetes y llaves en la entrada con llaves normales:
SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;
Este es el conjunto de resultados.
Punto | Coordenadas |
---|---|
(137.4 72.3) | [137.4,72.3] |
C. Uso de la función TRANSLATE
SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;
Este es el conjunto de resultados.
Traducidos | Reemplazados |
---|---|
bcddef | ddddef |