REPLACE (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics даПараллельное хранилище данных

Заменяет все вхождения указанного строкового значения другим строковым значением.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

REPLACE ( string_expression , string_pattern , string_replacement )  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

string_expression
Строковое выражение, в котором выполняется поиск. string_expression может быть символьного или двоичного типа данных.

string_pattern
Подстрока для поиска. string_pattern может быть символьного или двоичного типа данных. string_pattern не может превышать максимальное число байт, которое может уместиться на странице. Если string_pattern является пустой строкой (''), string_expression возвращается без изменений.

string_replacement
Строка замещения. Аргумент string_replacement может содержать символьные или двоичные данные.

Типы возвращаемых данных

Возвращает значение типа nvarchar, если один из входных аргументов имеет тип данных nvarchar; в противном случае возвращает значение типа varchar.

Возвращает NULL, если какой-либо из аргументов имеет значение NULL.

Если string_expression не относится к типу varchar(max) или nvarchar(max) , функция REPLACE усекает возвращаемое значение до 8000 байт. Для возврата значений, превышающих 8000 байт, аргумент string_expression должен быть явно приведен к типу данных с большими значениями.

Remarks

REPLACE производит сравнение, основанное на параметрах сортировки входных данных. Для выполнения сравнения в указанных параметрах сортировки можно воспользоваться функцией COLLATE, чтобы явно указать параметры сортировки для входных данных.

Символ 0x0000 (char(0) ) не определен в параметрах сортировки Windows, и его нельзя включать в REPLACE.

Примеры

На следующем примере показано, как строка cde в строке abcdefghicde заменяется на xxx.

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

Результирующий набор:

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

Следующий пример иллюстрирует использование функции COLLATE.

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

Результирующий набор:

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

В следующем примере вычисляется количество пробелов в предложении с помощью функции REPLACE. Сначала вычисляется длина предложения с помощью функции LEN. Затем символы ' ' заменяются символом " с помощью функции REPLACE. После этого снова вычисляется длина предложения. Полученная разность соответствует количеству пробелов в предложении.

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  

Результирующий набор:

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

(1 row(s) affected)  

См. также:

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)
Типы данных (Transact-SQL)
Строковые функции (Transact-SQL)