STUFF (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Функция STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.
Соглашения о синтаксисе Transact-SQL
Синтаксис
STUFF ( character_expression , start , length , replace_with_expression )
Аргументы
character_expression
Выражение символьного типа данных. Аргумент character_expression может быть константой, переменной или столбцом символьных или двоичных данных.
Начало
Целочисленное значение, указывающее расположение для запуска удаления и вставки. Если аргумент start отрицателен или равен нулю, то возвращается пустая строка. Если значение аргумента start превышает длину первого аргумента character_expression, возвращается значение NULL. start может иметь тип bigint.
length
Целое число, указывающее количество символов для удаления. Если аргумент length отрицателен, то возвращается пустая строка. Если значение аргумента length превышает длину первого аргумента character_expression, удаляются все символы вплоть до последнего в последнем аргументе character_expression. Если длина равна нулю, вставка происходит в начальном расположении, а символы не удаляются. length может иметь тип bigint.
replace_with_expression
Выражение символьного типа данных. replace_with_expression может быть константой, переменной или столбцом символьных или двоичных данных. Это выражение заменяет length символов выражения character_expression, начиная с позиции start. Предоставление NULL
в качестве replace_with_expression удаляет символы, не вставляя ничего.
Типы возвращаемых данных
Возвращает символьные данные, если character_expression имеет один из поддерживаемых символьных типов данных. Возвращает двоичные данные, если аргумент character_expression имеет один из поддерживаемых двоичных типов данных.
Замечания
Если начальная позиция или число удаляемых символов отрицательны или если начальная позиция превышает длину первой строки, возвращается пустая строка. Если начальная позиция равна 0, то возвращается значение NULL. Если число удаляемых символов превышает длину первой строки, удаление выполняется до первого символа первой строки.
Ошибка, которая возникает, если результат больше, чем максимальное значение, поддерживаемое типом возвращаемого параметра.
Дополнительные символы (суррогатные пары)
При использовании дополнительных параметров сортировки символов (SC) оба character_expression и replace_with_expression могут включать суррогатные пары. Параметр длины будет рассматривать каждый суррогат в character_expression как один символ.
Примеры
Следующий пример иллюстрирует создание строки abcdef
после удаления из нее трех символов, начиная с позиции 2
, с символа b
и вставки второй строки в место удаления.
SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO
Вот результирующий набор.
---------
aijklmnef
(1 row(s) affected)