Joining strings with separators in MySQL - CONCAT_WS()

The CONCAT_WS function in MySQL is useful for concatinating strings with a specified separator. This function is similar to the CONCAT function, but it allows you to specify a separator that will be placed between each string that is concatenated. This can be particularly useful when you want to join strings together with a specific delimiter, such as a comma or a space. The "WS" in CONCAT_WS stands for "With Separator", underlining the function's main functionality.

Understanding CONCAT_WS in MySQL

The CONCAT_WS function in MySQL accepts multiple arguments, where the first argument is the separator to be used between each string in the concatenation process. The subsequent arguments are the strings that are to be joined. The syntax is straightforward:


CONCAT_WS(separator, string1, string2, ..., stringN)

This function is particularly useful for ensuring a consistent separator throughout the concatenated string and adeptly handling potential NULL values in the strings being concatenated, by omitting them from the final output.

Examples of Using CONCAT_WS in MySQL

Example 1: Concatenating Names with a Separator

If you have a table employees with columns first_name, middle_name, and last_name, and aim to create a full name string with spaces between the names, the approach is:


SELECT CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name

FROM employees;

Should middle_name be NULL in some rows, CONCAT_WS will automatically exclude it, ensuring no additional spaces are mistakenly introduced.

Example 2: Creating a CSV Line from Table Columns

For scenarios requiring the construction of a comma-separated value (CSV) line from several table columns, whether for export or reporting:


SELECT CONCAT_WS(',', customer_id, customer_name, customer_email)

FROM customers;

This example demonstrates how customer_id, customer_name, and customer_email can be concatenated into a single CSV line, using commas as separators.

Advantages of CONCAT_WS in MySQL

  • Handling NULL Values: CONCAT_WS excels in handling NULL values by skipping them in the concatenation, preventing unwanted spaces or gaps in the output.

  • Flexibility: The function supports a flexible number of arguments, catering to a wide range of concatenation tasks, from simple joins to more complex constructions.

  • Separator Consistency: CONCAT_WS guarantees that the separator is uniformly applied between each pair of non-null strings, improving the readability and format consistency of the final output.

Turn your SQL into Beautiful Dashboards

Create amazing KPI dashboards directly from your SQL database with Dashase

  • Create charts, tables, and widgets
  • Collaboration - Shared Dashboards
  • AI assisted query generation - GPT-4
  • Supports PostgreSQL, MySQL, SQL Server, and more

MySQL Snippets