Partilhar via


REPLACE (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

Substitui todas as ocorrências de um valor da cadeia de caracteres especificado por outro valor de cadeia de caracteres.

Convenções de sintaxe de Transact-SQL

Sintaxe

REPLACE ( string_expression , string_pattern , string_replacement )  

Argumentos

string_expression
É a expression de cadeia de caracteres a ser pesquisada. string_expression pode ser de um tipo de dados de caractere ou binários.

string_pattern
É a subcadeia de caracteres a ser localizada. string_pattern pode ser de um caractere ou de tipo de dados binários. string_pattern não deve exceder o número máximo de bytes que cabem em uma página. Se string_pattern for uma cadeia de caracteres vazia (' '), string_expression será retornado inalterado.

string_replacement
É a cadeia de caracteres de substituição. string_replacement pode ser de um tipo de dados de caractere ou binários.

Tipos de retorno

Retorna nvarchar se um dos argumentos de entrada é do tipo de dados nvarchar; caso contrário, REPLACE retorna varchar.

Retornará NULL se qualquer um dos argumentos for NULL.

Se string_expression não for do tipo varchar(max) ou nvarchar(max), REPLACE truncará o valor retornado em 8.000 bytes. Para retornar valores com mais de 8.000 bytes, string_expression deve ser convertida explicitamente em um tipo de dados de valor grande.

Comentários

REPLACE efetua comparações com base na ordenação da entrada. Para fazer uma comparação em uma ordenação especificada, use COLLATE para aplicar uma ordenação explícita à entrada.

0x0000 (char(0) ) é um caractere indefinido em ordenações do Windows e não pode ser incluído em REPLACE.

Exemplos

O exemplo a seguir substitui a cadeia de caracteres cde em abcdefghicde por xxx.

SELECT REPLACE('abcdefghicde','cde','xxx');  
GO  

Veja a seguir o conjunto de resultados.

------------  
abxxxfghixxx  
(1 row(s) affected)  

O exemplo a seguir usa a função COLLATE.

SELECT REPLACE('This is a Test'  COLLATE Latin1_General_BIN,  
'Test', 'desk' );  
GO  

Veja a seguir o conjunto de resultados.

------------  
This is a desk  
(1 row(s) affected)  

O exemplo a seguir calculará o número de espaços em uma frase usando a função REPLACE. Primeiro, ele calcula o tamanho da frase usando a função LEN. Depois, ele substitui os "caracteres" por REPLACE. Após esse processo, ele calculará o tamanho da frase mais uma vez. A diferença resultante é o número de caracteres de espaço na frase.

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  

Veja a seguir o conjunto de resultados.

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

(1 row(s) affected)  

Confira também

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 dados (Transact-SQL)
Funções de cadeia de caracteres (Transact-SQL)