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)