Summary: in this tutorial, you will learn how to use the SQL Server STUFF()
function to delete a part of a string and then insert a substring into the string, beginning at a specified position.
SQL Server STUFF() function overview
The STUFF()
function deletes a part of a string and then inserts a substring into the string, beginning at a specified position.
The following shows the syntax of the STUFF()
function:
STUFF ( input_string , start_position , length , replace_with_substring )
Code language: SQL (Structured Query Language) (sql)
The STUFF()
function accepts four arguments:
input_string
is the character string to be processed.start_position
is an integer that identifies the position to start deletion and insertion. Ifstart_position
is negative, zero, or longer than the length of the string, the function will return NULL.length
specifies the number of characters to delete. If thelength
is negative, the function returns NULL. Iflength
is longer than the length of theinput_string
, the function will delete the whole string. In caselength
is zero, the function will insert thereplace_with_substring
at the beginning of theinput_string
.replace_with_substring
is a substring that replaceslength
characters of theinput_string
beginning atstart_position
.
SQL Server STUFF() function examples
Let’s take some examples of using the SQL Server STUFF()
function.
A) Using STUFF() function to insert a string into another string at a specific Location
This example uses the STUFF()
function to delete the first three characters of the string 'SQL Tutorial'
and then insert the string 'SQL Server'
at the beginning of the string:
SELECT
STUFF('SQL Tutorial', 1 , 3, 'SQL Server') result;
Code language: SQL (Structured Query Language) (sql)
Here is the output:
result
-------------------
SQL Server Tutorial
(1 row affected)
B) Using the STUFF() function to convert time from HHMM to HH:MM
The following example uses the STUFF()
function to insert the colon (:) at the middle of the time in the format HHMM
and returns the new time value in the format HH:MM
:
SELECT
STUFF('1230', 3, 0, ':') AS formatted_time;
Code language: SQL (Structured Query Language) (sql)
The output is:
formatted_time
--------------
12:30
(1 row affected)
Code language: CSS (css)
C) Using the STUFF() function to format date from MMDDYYY format to MM/DD/YYYY:
The following example calls the STUFF()
function twice to format a date from MMDDYYY
to MM/DD/YYY
:
SELECT
STUFF(STUFF('03102019', 3, 0, '/'), 6, 0, '/') formatted_date;
Code language: SQL (Structured Query Language) (sql)
The output of the statement is:
formatted_date
--------------
03/10/2019
(1 row affected)
D) Using the STUFF() function to mask credit card numbers
This example uses the STUFF()
function to mask a credit card number. It reveals only the last four characters of the credit card no:
DECLARE
@ccn VARCHAR(20) = '4882584254460197';
SELECT
STUFF(@ccn, 1, LEN(@ccn) - 4, REPLICATE('X', LEN(@ccn) - 4))
credit_card_no;
Code language: SQL (Structured Query Language) (sql)
Here is the output:
credit_card_no
-----------------
XXXXXXXXXXXX0197
(1 row affected)
In this tutorial, you have learned how to use the SQL Server STUFF()
function to delete a part of a string and insert a new substring, starting at a specified position.