REPLACE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

REPLACE ( string_expression , string_pattern , string_replacement )  

Аргументы

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 должен быть явно приведен к типу данных с большими значениями.

Замечания

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: 7  

(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)