Summary: in this tutorial, you will learn how to use the SQL Server CONCAT_WS() function to concatenate multiple strings into a single string with a specified separator.
Overview of SQL Server CONCAT_WS() function
The CONCAT_WS() function allows you to concatenate multiple strings into a string string with a specified separator. CONCAT_WS() means concatenate with separator.
Here’s the syntax of the CONCAT_WS() function:
CONCAT_WS(separator,string1,string2,[...stringN]);Code language: SQL (Structured Query Language) (sql)In this syntax:
separator: The delimiter that you use to separate the concatenated strings.string1,string2, …: The strings that you want to concatenate.
The CONCAT_WS() function returns a single string formed by concatenating all the input strings with the specified separator.
Note that the CONCAT_WS() requires at least two input strings. This means that if pass zero or one input string argument, the CONCAT_WS() function will raise an error.
The CONCAT_WS() function treats NULL as an empty string of type VARCHAR(1). It also does not add the separator between NULLs. Therefore, the CONCAT_WS() function can cleanly join strings that may have blank values.
SQL Server CONCAT_WS() function examples
Let’s take some examples of using the CONCAT_WS() function.
1) Using the CONCAT_WS() function to join literal strings with a separator
The following example uses the CONCAT_WS() function to join two literal strings into one using a space:
SELECT
CONCAT_WS(' ', 'John', 'Doe') full_name;Code language: SQL (Structured Query Language) (sql)Here is the output:
full_name
---------
John Doe
(1 row affected)2) Using the CONCAT_WS() function with table data
The following statement uses the CONCAT_WS() function to join values in the last_name and first_name columns of the sales.customers table using a comma (,) as the separator:
SELECT
first_name,
last_name,
CONCAT_WS(', ', last_name, first_name) full_name
FROM
sales.customers
ORDER BY
first_name,
last_name;Code language: SQL (Structured Query Language) (sql)The following picture shows the partial output:

3) Using the CONCAT_WS() function with NULL
The following statement demonstrates how the CONCAT_WS() function handles input strings that have NULL values:
SELECT
CONCAT_WS(',', 1, 2, NULL, NULL, 3);Code language: SQL (Structured Query Language) (sql)The output is as follows:
result
----------------------------------------
1,2,3
(1 row affected)The output indicates that the CONCAT_WS() function ignores NULL and doesn’t add the separator between NULL values.
The following example concatenates customer data to format customer’s addresses. If a customer does not have a phone number, the CONCAT_WS() function ignores it:
SELECT
CONCAT_WS
(
CHAR(13),
CONCAT(first_name, ' ', last_name),
phone,
CONCAT(city, ' ', state),
zip_code,
'---'
) customer_address
FROM
sales.customers
ORDER BY
first_name,
last_name;Code language: SQL (Structured Query Language) (sql)This picture illustrates the partial output:

Note that you must change the result of the query from the grid to text to see the output in the above format:
4) Using the CONCAT_WS() function to generate CSV data
This statement uses a comma (,) as the separator and concatenates values in first_name, last_name, and email column to generate a CSV file:
SELECT
CONCAT_WS(',', first_name, last_name, email)
FROM
sales.customers
ORDER BY
first_name,
last_name;Code language: SQL (Structured Query Language) (sql)The partial output is as follows:

Summary
- Use the SQL Server
CONCAT_WS()function to concatenate multiple strings into a single string with a specified separator.