REPLACE (Transact-SQL)
Заменяет все вхождения указанного строкового значения другим строковым значением.
Синтаксические обозначения Transact-SQL
Синтаксис
REPLACE ( string_expression , string_pattern , string_replacement )
Аргументы
string_expression
Строковое выражение, в котором выполняется поиск. string_expression может иметь либо символьный, либо двоичный тип данных.string_шаблон
Подстрока для поиска. string_pattern может иметь либо символьный, либо двоичный тип данных. string_pattern не может быть пустой строкой ('') и не может превышать максимальное число байтов, которое может уместиться на странице.замена string_
Строка замещения. 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 в строке abcdefghi заменяется на xxx.
SELECT REPLACE('abcdefghicde','cde','xxx');
GO
Ниже приводится результирующий набор.
------------
abxxxfghixxx
(1 row(s) affected)
Следующий пример иллюстрирует использование функции COLLATE.
SELECT REPLACE('Das ist ein Test' COLLATE Latin1_General_BIN,
'Test', 'desk' );
GO
Ниже приводится результирующий набор.
------------
Das ist ein desk
(1 row(s) affected)