Функция SQL Server STUFF

В этом руководстве вы узнаете, как использовать функцию SQL Server STUFF() для удаления части строки, а затем вставки подстроки в строку, начиная с указанной позиции.

Обзор функции SQL Server STUFF()

Функция STUFF() удаляет часть строки, а затем вставляет подстроку в строку, начиная с указанной позиции.

Ниже показан синтаксис функции STUFF():

STUFF( input_string , start_position , length , replace_with_substring )

Функция STUFF() принимает четыре аргумента:

  • input_string — строка символов для обработки.
  • start_position — это целое число, которое определяет позицию для начала удаления и вставки. Если start_position отрицательно, равно нулю или больше длины строки, функция вернет NULL.
  • length указывает количество символов для удаления. Если length отрицательный, функция возвращает NULL. Если length больше длины input_string, функция удалит всю строку. Если length равен нулю, функция вставит replace_with_substring в начало input_string.
  • replace_with_substring — это подстрока, которая заменяет символы длины входной_строки, начиная с начальной_позиции.

Примеры функций SQL Server STUFF()

Давайте рассмотрим несколько примеров использования функции SQL Server STUFF().

A) Использование функции STUFF() для вставки строки в другую строку в определенном месте

В этом примере функция STUFF() используется для удаления первых трех символов строки «SQL Tutorial», а затем вставки строки «SQL Server» в начало строки:

SELECT 
    STUFF('SQL Tutorial', 1 , 3, 'SQL Server') result;

Вот что получилось:

result
-------------------
SQL Server Tutorial
(1 row affected)

B) Использование функции STUFF() для преобразования времени из формата ЧЧММ в ЧЧ:ММ

В следующем примере функция STUFF() используется для вставки двоеточия(:) в середину времени в формате ЧЧММ и возвращает новое значение времени в формате ЧЧ:ММ:

SELECT 
    STUFF('1230', 3, 0, ':') AS formatted_time;

Вывод:

formatted_time
--------------
12:30
(1 row affected)

C) Использование функции STUFF() для форматирования даты из формата MMDDYYY в MM/DD/YYYY:

В следующем примере функция STUFF() вызывается дважды для форматирования даты из MMDDYYY в MM/DD/YYY:

SELECT 
    STUFF(STUFF('03102019', 3, 0, '/'), 6, 0, '/') formatted_date;

Вывод заявления:

formatted_date
--------------
03/10/2019
(1 row affected)

D) Использование функции STUFF() для маскировки номеров кредитных карт

В этом примере функция STUFF() используется для маскировки номера кредитной карты. Она показывает только последние четыре символа номера кредитной карты:

DECLARE 
    @ccn VARCHAR(20) = '4882584254460197';
SELECT 
    STUFF(@ccn, 1, LEN(@ccn) - 4, REPLICATE('X', LEN(@ccn) - 4))
    credit_card_no;

Вот что получилось:

credit_card_no
-----------------
XXXXXXXXXXXX0197
(1 row affected)

В этом руководстве вы узнали, как использовать функцию SQL Server STUFF() для удаления части строки и вставки новой подстроки, начиная с указанной позиции.

Мирослав С.

Автор статей, ИБ-специалист