REPLACE (Transact-SQL)
Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
REPLACE ( string_expression , string_pattern , string_replacement )
Argumentos
string_expression
Es la expresión de cadena que se va a buscar. string_expression puede ser de un tipo de datos binario o de caracteres.string_pattern
Es la subcadena que se va a buscar. string_pattern puede ser de un tipo de datos binario o de caracteres. string_pattern no puede ser una cadena vacía (''), y no debe superar el número máximo de bytes que cabe en una página.string_replacement
Es la cadena de reemplazo. string_replacement puede ser de un tipo de datos binario o de caracteres.
Tipos de valor devueltos
Devuelve nvarchar si uno de los argumentos de entrada tiene el tipo de datos nvarchar; de lo contrario, REPLACE devuelve varchar.
Devuelve NULL si alguno de los argumentos es NULL.
Si string_expression no es de tipo varchar(max) o nvarchar(max), REPLACE trunca el valor devuelto en 8.000 bytes. Para devolver valores mayores de 8.000 bytes, string_expression debe convertirse explícitamente a un tipo de datos de valores grandes.
Comentarios
REPLACE realiza comparaciones basándose en la intercalación de la entrada. Para realizar una comparación en la intercalación especificada, puede utilizar COLLATE para aplicar una intercalación explícita a la entrada.
0x0000 (char(0)) es un carácter no definido en las intercalaciones de Windows y no se puede incluir en REPLACE.
Ejemplos
El siguiente ejemplo reemplaza la cadena cde de abcdefghi por xxx.
SELECT REPLACE('abcdefghicde','cde','xxx');
GO
El conjunto de resultados es el siguiente.
------------
abxxxfghixxx
(1 row(s) affected)
El siguiente ejemplo utiliza la función COLLATE.
SELECT REPLACE('This is a Test' COLLATE Latin1_General_BIN,
'Test', 'desk' );
GO
El conjunto de resultados es el siguiente.
------------
This is a desk
(1 row(s) affected)