Поделиться через


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)