STUFF (Transact-SQL)

Функция STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

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

Синтаксис

STUFF ( character_expression , start , length , replaceWith_expression )

Аргументы

  • character_expression
    Выражение символьного типа данных. Аргумент character_expression может быть константой, переменной или столбцом как символьных, так и двоичных данных.

  • start
    Целочисленное значение, определяющее место начала удаления и вставки. Если аргументы start или length отрицательные, то возвращается значение NULL. Если значение аргумента start превышает длину первого аргумента character_expression, тогда возвращается значение NULL. Аргумент start может иметь тип bigint.

  • length
    Целочисленное выражение, которое определяет, какое количество символов следует удалить. Если значение аргумента length превышает длину первого аргумента character_expression, удаляются все символы вплоть до последнего в последнем аргументе character_expression. Аргумент length может иметь тип bigint.

  • replaceWith_expression
    Выражение символьного типа данных. Аргумент character_expression может быть константой, переменной или столбцом как символьных, так и двоичных данных. Это выражение заменит символы length выражения character_expression, начиная с позиции start.

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

Возвращает символьные данные, если character_expression имеет один из поддерживаемых символьных типов данных. Возвращает двоичные данные, если аргумент character_expression имеет один из поддерживаемых двоичных типов данных.

Замечания

Если начальная позиция или число удаляемых символов отрицательны или если начальная позиция превышает длину первой строки, возвращается пустая строка. Если начальная позиция равна 0, то возвращается значение NULL. Если число удаляемых символов превышает длину первой строки, удаление выполняется до первого символа первой строки.

Ошибка, которая возникает, если результат больше, чем максимальное значение, поддерживаемое типом возвращаемого параметра.

Дополнительные символы (суррогатные пары)

При использовании параметров сортировки SC как выражение character_expression, так и выражение replaceWith_expression могут содержать суррогатные пары. Параметр длины будет рассматривать каждый суррогат в character_expression как один символ.

Примеры

Следующий пример иллюстрирует создание строки abcdef после удаления из нее трех символов, начиная с позиции 2, с символа b и вставки второй строки в место удаления.

SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO

Ниже приводится результирующий набор.

--------- 
aijklmnef 

(1 row(s) affected)

См. также

Справочник

Типы данных (Transact-SQL)

Строковые функции (Transact-SQL)