REPLACE (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Sostituisce tutte le occorrenze di un valore stringa specificato con un altro valore stringa.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

REPLACE ( string_expression , string_pattern , string_replacement )  

Argomenti

string_expression
Stringa expression da cercare. Il tipo di dati di string_expression può essere character o binary.

string_pattern
Sottostringa da individuare. Il tipo di dati di string_pattern può essere character o binary. string_pattern non deve superare il numero massimo di byte che rientra in una pagina. Se string_pattern è una stringa vuota (''), string_expression viene restituito invariato.

string_replacement
Stringa di sostituzione. Il tipo di dati di string_replacement può essere character o binary.

Tipi restituiti

Restituisce nvarchar se uno degli argomenti di input è di tipo nvarchar. In caso contrario REPLACE restituisce varchar.

Viene restituito NULL se un argomento qualsiasi è NULL.

Se string_expression non è di tipo varchar(max) o nvarchar(max), REPLACE tronca il valore restituito a 8000 byte. Per restituire valori maggiori di 8000 byte è necessario eseguire il cast esplicito di string_expression a un tipo di dati appropriato per valori di grandi dimensioni.

Osservazioni:

Tramite REPLACE vengono effettuati confronti in base alle regole di confronto dell'input. Per eseguire un confronto in base a regole di confronto specifiche, è possibile usare COLLATE per applicare regole di confronto esplicite all'input.

0x0000 (char(0)) è un carattere non definito nelle regole di confronto di Windows e non può essere incluso in REPLACE.

Esempi

Nell'esempio seguente la stringa cde in abcdefghicde viene sostituita da xxx.

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

Il set di risultati è il seguente.

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

Nell'esempio seguente viene utilizzata la funzione COLLATE.

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

Il set di risultati è il seguente.

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

Nell'esempio seguente viene calcolato il numero di spazi presenti in una frase usando la funzione REPLACE. Per prima cosa, calcola la lunghezza della frase con la funzione LEN. Sostituisce quindi i caratteri ' ' con '' con REPLACE. Al termine di questo processo, calcola nuovamente la lunghezza della frase. La differenza risultante corrisponde al numero di caratteri spazio presenti nella 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  

Il set di risultati è il seguente.

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

(1 row(s) affected)  

Vedi anche

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)
Tipi di dati (Transact-SQL)
Funzioni per i valori stringa (Transact-SQL)