SQL STUFF() String Function
The SQL STUFF()
function deletes a specified number of characters from a string and replaces them with another substring at a specified starting position.
The STUFF() function is useful for inserting or replacing text within a string, such as modifying part of a field.
In this tutorial, we will go through SQL STUFF()
String function, its syntax, and how to use this function in SQL statements for string operations, with the help of well detailed examples.
Syntax of SQL STUFF() Function
The basic syntax of the SQL STUFF()
function is:
STUFF(string, start, length, replacement);
Each part of this syntax has a specific purpose:
- string: The original string where you want to replace characters.
- start: The starting position (1-based) for the replacement.
- length: The number of characters to delete from the string.
- replacement: The substring to insert at the specified position.
The STUFF()
function returns the modified string with the specified replacement inserted.
Setup for Examples: Creating the Database and Table
We’ll create a sample products
table with fields product_code
and product_name
. Follow these steps to set up the data for the STUFF()
function examples.
1. First, create a new database called inventory
:
CREATE DATABASE inventory;
2. Select the inventory
database to work with:
USE inventory;
3. Create a table named products
with the fields product_id
, product_code
, and product_name
:
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_code VARCHAR(20),
product_name VARCHAR(100)
);
4. Insert sample data into the products
table to use with the STUFF()
function examples:
INSERT INTO products (product_code, product_name)
VALUES
('PRD001', 'Laptop'),
('PRD002', 'Smartphone'),
('PRD003', 'Tablet'),
('PRD004', 'Monitor'),
('PRD005', 'Keyboard');
With this setup complete, you can run the STUFF()
function examples to test and view results in the products
table.
Examples: Using STUFF() in SQL Queries
We’ll go through examples demonstrating the STUFF()
function in SQL, using sample data from a products
table with fields product_code
and product_name
.
1. Replacing Part of a Product Code
To replace characters in the product_code
column starting at the third character, with a length of 2, and replace them with “XX”:
SELECT product_code,
STUFF(product_code, 3, 2, 'XX') AS modified_code
FROM products;
This query replaces two characters starting at the third position of product_code
with “XX”.
2. Inserting Text into a Product Name
To insert the word “New” at the fifth character position of each product_name
:
SELECT product_name,
STUFF(product_name, 5, 0, 'New ') AS updated_name
FROM products;
This query inserts “New ” at the fifth position in each product_name
without deleting any existing characters (length of 0).
3. Replacing Multiple Characters in a String
To replace the first three characters of each product_code
with “ABC”:
SELECT product_code,
STUFF(product_code, 1, 3, 'ABC') AS new_code
FROM products;
This query replaces the first three characters of product_code
with “ABC”.
4. Using STUFF() with Concatenation
To modify product_name
by replacing part of the text and appending additional information:
SELECT product_name,
CONCAT(STUFF(product_name, 3, 2, '***'), ' - Updated') AS modified_name
FROM products;
This query replaces two characters in product_name
starting at the third position with “***” and adds ” – Updated” at the end.
FAQs for SQL STUFF()
1. What does the SQL STUFF() function do?
The STUFF()
function removes a specified number of characters from a string and inserts another string at a specified position.
2. Can STUFF() handle NULL values?
If any argument in STUFF()
is NULL
, the result is NULL
.
3. Is STUFF() supported in all SQL databases?
No, STUFF()
is specific to SQL Server. Other databases may have similar functions, such as INSERT()
in MySQL.
4. Can STUFF() be used to insert without replacing?
Yes, set the length
argument to 0 to insert the replacement string without deleting any characters.
5. What happens if the start position is out of range?
If start
is greater than the string length, STUFF()
returns NULL
.