Sdílet prostřednictvím


NAHRADIT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Nahrazuje všechny výskyty dané hodnoty řetězce jinou hodnotou řetězce.

Transact-SQL konvence syntaxe

Syntaxe

REPLACE ( string_expression , string_pattern , string_replacement )  

Arguments

string_expression
Je řetězcový výraz , který má být vyhledán. string_expression může být znaku nebo binárního datového typu.

string_pattern
je podřetězec, který lze najít. string_pattern může být znaku nebo binárního datového typu. string_pattern nesmí překročit maximální počet bajtů, které se vejdou na stránku. Pokud je string_pattern prázdný řetězec (''), string_expression se vrátí beze změny.

string_replacement
Je náhradní provázek. string_replacement může být znaku nebo binárního datového typu.

Návratové typy

Vrací nvarchar , pokud jeden ze vstupních argumentů patří datovému typu nvarchar ; jinak REPLACE vrátí varchar.

Vrátí NULL, pokud je některý z argumentů NULL.

Pokud string_expression není typu varchar(max) nebo nvarchar(max), REPLACE zkrátí návratovou hodnotu na 8 000 bajtů. Pro vrácení hodnot větších než 8 000 bajtů musí být string_expression explicitně přeneseny na datový typ s velkou hodnotou.

Poznámky

REPLACE provádí porovnání na základě hromadění vstupů. Pro provedení porovnání ve specifikované kolaci můžete použít COLLATE k explicitní kolaci vstupu.

0x0000 (char(0)) je nedefinovaný znak ve Windows třídění a nelze jej zahrnout do REPLACE.

Examples

Následující příklad nahrazuje řetězec cde v abcdefghicde za xxx.

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

Tady je soubor výsledků.

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

Následující příklad používá funkci.COLLATE

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

Tady je soubor výsledků.

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

Následující příklad vypočítává počet mezer ve větě pomocí REPLACE funkce. Nejprve vypočítá délku věty pomocí LEN funkce. Poté nahradí znaky '' znakem '' za REPLACE. Po tomto procesu opět vypočítá délku věty. Výsledný rozdíl je počet znaků s mezerou ve větě.

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  

Tady je soubor výsledků.

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

(1 row(s) affected)  

Viz také

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)
Datové typy (Transact-SQL)
řetězcové funkce (Transact-SQL)