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_stringis the character string to be processed.start_positionis an integer that identifies the position to start deletion and insertion. Ifstart_positionis negative, zero, or longer than the length of the string, the function will return NULL.lengthspecifies the number of characters to delete. If thelengthis negative, the function returns NULL. Iflengthis longer than the length of theinput_string, the function will delete the whole string. In caselengthis zero, the function will insert thereplace_with_substringat the beginning of theinput_string.replace_with_substringis a substring that replaceslengthcharacters of theinput_stringbeginning 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.