REPLACE (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena.

Convenciones de sintaxis de Transact-SQL

Sintaxis

REPLACE ( string_expression , string_pattern , string_replacement )  

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

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 encontrar. string_pattern puede ser de un tipo de datos binario o de caracteres. string_pattern no debe superar el número máximo de bytes que cabe en una página. Si string_pattern es una cadena vacía ("), string_expression se devuelve sin modificar.

string_replacement
Es la cadena de reemplazo. string_replacement puede tener un tipo de datos de carácter o binario.

Tipos de valor devuelto

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 8000 bytes. Para devolver valores mayores de 8000 bytes, string_expression se debe convertir explícitamente en un tipo de datos de valores grandes.

Observaciones

REPLACE realiza comparaciones basándose en la intercalación de la entrada. Para realizar una comparación de una intercalación especificada, puede usar 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 abcdefghicde 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)  

En el ejemplo siguiente se calcula el número de espacios en una oración mediante la función REPLACE. Primero, calcula la longitud de la oración con la función LEN. Luego, reemplaza los caracteres ' ' por '' con REPLACE. Después de este proceso, vuelve a calcular la longitud de la oración. La diferencia resultante es el número de caracteres de espacio en la oración.

DECLARE @STR NVARCHAR(100), @LEN1 INT, @LEN2 INT;
SET @STR = N'This is a sentence with spaces in it.';
SET @LEN1 = LEN(@STR);
SET @STR = REPLACE(@STR, N' ', N'');
SET @LEN2 = LEN(@STR);
SELECT N'Number of spaces in the string: ' + CONVERT(NVARCHAR(20), @LEN1 - @LEN2);

GO  

El conjunto de resultados es el siguiente:

------------  
Number of spaces in the sentence: 7  

(1 row(s) affected)  

Consulte también

CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
Tipos de datos (Transact-SQL)
String Functions (Transact-SQL) [Funciones de cadena (Transact-SQL)]