SQL CONCAT_WS()
The SQL CONCAT_WS() function is used to concatenate two or more strings with a specified separator between each value. The “WS” in CONCAT_WS stands for “with separator.” Unlike CONCAT, CONCAT_WS also handles NULL values, skipping any NULL inputs instead of returning NULL for the entire result.
This function is useful when you need to concatenate values while avoiding NULL results and adding separators, such as commas, dashes, or spaces, between values.
In this tutorial, we will go through SQL CONCAT_WS() 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 CONCAT_WS() Function
The basic syntax of the SQL CONCAT_WS function is:
CONCAT_WS(separator, string1, string2, ...);
Each part of this syntax has a specific purpose:
- separator: The separator to place between each concatenated string.
- string1, string2, …: The strings to concatenate. You can include as many strings as needed, separated by commas.
NULLvalues are skipped automatically.
Setup for Examples: Creating the Database and Table
We’ll create a sample students table to demonstrate the CONCAT_WS function examples, combining different fields for text formatting.
1. First, create a new database called school_db:
CREATE DATABASE school_db;
2. Select the school_db database to work with:
USE school_db;
3. Create a table named students with columns id, first_name, last_name, and age:
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT
);
4. Insert sample data into the students table:
INSERT INTO students (first_name, last_name, age)
VALUES
('Alice', 'Smith', 14),
('Bob', 'Jones', 15),
('Charlie', NULL, 13),
('David', 'Johnson', NULL);
With this setup complete, we can run the CONCAT_WS function examples to test and view results in the students table.

Examples Using CONCAT_WS in SQL Queries
We’ll go through examples demonstrating the CONCAT_WS function in SQL, using sample data from a students table with fields first_name, last_name, and age.

1 Concatenating First Name and Last Name with a Space Separator
To combine first_name and last_name into a single column called full_name with a space between them:
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name
FROM students;
This query returns each student’s full name with a space as the separator. If first_name or last_name is NULL, it is skipped in the concatenation.

2 Concatenating Multiple Fields with a Comma Separator
To combine first_name, last_name, and age with a comma separator, creating a descriptive field:
SELECT CONCAT_WS(', ', first_name, last_name, age) AS description
FROM students;
This query returns a concatenated description, such as “Alice, Smith, 14”. If any field is NULL, it is skipped in the output without affecting the other values.

Reference: SQL NULL
3 Using CONCAT_WS with Custom Separators for Text Formatting
To format text with custom separators, such as a hyphen between first_name and last_name, and parentheses around age:
SELECT CONCAT_WS(' ', CONCAT_WS('-', first_name, last_name), CONCAT('(', age, ')')) AS formatted_text
FROM students;
This query returns results like “Alice-Smith (14)”. CONCAT_WS is used twice to control both the main separator (space) and the secondary separator (hyphen). If first_name or last_name is NULL, it is skipped.

4 Using CONCAT_WS in a WHERE Clause
To search for students with a specific formatted name in the full_name column:
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name
FROM students
WHERE CONCAT_WS(' ', first_name, last_name) = 'Alice Smith';
This query returns records where the concatenated full name matches “Alice Smith”. Using CONCAT_WS in the WHERE clause ensures the search is conducted with the formatted output.

Reference: SQL WHERE
FAQs for SQL CONCAT_WS
1 What does the SQL CONCAT_WS function do?
The CONCAT_WS function joins two or more strings with a specified separator, skipping any NULL values.
2 What happens if CONCAT_WS encounters a NULL value?
If CONCAT_WS encounters a NULL value, it skips that value and concatenates the other values, instead of returning NULL as CONCAT does.
3 Can CONCAT_WS be used to format values?
Yes, CONCAT_WS is often used to format text values, allowing for separators like commas, hyphens, and spaces between fields.
4 How is CONCAT_WS different from CONCAT?
CONCAT_WS requires a separator and skips NULL values, while CONCAT does not require a separator and returns NULL if any value is NULL.
5 Can CONCAT_WS be used with numeric data?
Yes, CONCAT_WS can combine both numeric and string data. Numeric values are automatically converted to strings during concatenation.
