Udostępnij za pomocą


ZASTĄPNIJ (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zastępuje wszystkie wystąpienia określonej wartości ciągu na inną wartość ciągu znaków.

Transact-SQL konwencje składni

Składnia

REPLACE ( string_expression , string_pattern , string_replacement )  

Arguments

string_expression
To wyrażenie ciągowe, które należy przeszukać. string_expression może być typu danych znakowych lub binarnych.

string_pattern
To podciąg, który można znaleźć. string_pattern mogą być typu danych znakowych lub binarnych. string_pattern nie może przekraczać maksymalnej liczby bajtów mieszczących się na stronie. Jeśli string_pattern jest pustym ciągiem (''), string_expression jest zwracany bez zmian.

string_replacement
To jest zastępczy sznur. string_replacement może być typu danych znakowego lub binarnego.

Typy zwracane

Zwraca nvarchar , jeśli jeden z argumentów wejściowych należy do typu danych nvarchar ; w przeciwnym razie REPLACE zwraca varchar.

Zwraca NULL, jeśli którykolwiek z argumentów jest NULL.

Jeśli string_expression nie jest typu varchar(max) lub nvarchar(max), REPLACE skraca wartość zwrotną do 8 000 bajtów. Aby zwrócić wartości większe niż 8 000 bajtów, string_expression musi być jawnie przypisane do typu danych o dużej wartości.

Uwagi

REPLACE wykonuje porównania na podstawie zestawienia danych wejściowych. Aby przeprowadzić porównanie w określonej kolacji, możesz użyć COLLATE , aby zastosować jawną kolację do wejścia.

0x0000 (char(0)) to nieokreślony znak w zestawieniach Windows i nie może być włączony do REPLACE.

Przykłady

Poniższy przykład zastępuje ciąg cde w abcdefghicde na xxx.

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

Oto zestaw wyników.

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

Poniższy przykład wykorzystuje COLLATE tę funkcję.

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

Oto zestaw wyników.

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

Poniższy przykład oblicza liczbę spacji w zdaniu za pomocą REPLACE funkcji. Po pierwsze, oblicza długość zdania z funkcją LEN . Następnie zastępuje znaki '' przez '' przez REPLACE. Po tym procesie ponownie oblicza długość zdania. Powstała różnica to liczba znaków spacji w zdaniu.

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  

Oto zestaw wyników.

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

(1 row(s) affected)  

Zobacz też

CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
CYTAT (Transact-SQL)
ODWRÓT (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
RZECZY (Transact-SQL)
TŁUMACZ (Transact-SQL)
typy danych (Transact-SQL)
funkcje ciągów (Transact-SQL)