Skip to main content
Documents
Basic SyntaxMath FunctionsDate FunctionsJSON FunctionsDatabasesTables & Schema ManagementString FunctionsTriggersIndexes

PostgreSQL CONCAT_WS

The PostgreSQL `CONCAT_WS` function is a string function used to concatenate two or more strings with a specified separator. It simplifies joining string values and ensures the separator is only inserted between non-null values.

Usage

`CONCAT_WS` is employed when you need to join multiple strings with a delimiter, especially when some values might be null. It helps create cleaner concatenated outputs without leading or trailing separators.

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

In this syntax, `separator` is the string that separates the concatenated values, while `string1`, `string2`, etc., are the strings to be joined. Note that `CONCAT_WS` is available from PostgreSQL version 9.1 onwards.

Examples

1. Basic Concatenation

sql
SELECT CONCAT_WS('-', '2023', '10', '05') AS formatted_date;

This example concatenates the strings `'2023'`, `'10'`, and `'05'` with a hyphen (`-`) as the separator, resulting in `2023-10-05`.

2. Concatenation with Null Values

sql
SELECT CONCAT_WS(', ', 'John', NULL, 'Doe') AS full_name;

Here, the strings `'John'` and `'Doe'` are concatenated with a comma and space (`, `) as the separator. The `NULL` value is ignored, producing `John, Doe`.

3. Concatenation from Table Columns

sql
SELECT CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name
FROM employees;

This example concatenates `first_name`, `middle_name`, and `last_name` from the `employees` table, using a space as the separator. Null values in any column are automatically skipped.

Tips and Best Practices

  • Use appropriate separators. Choose separators that make the result clear and readable.
  • Handle nulls effectively. `CONCAT_WS` naturally skips null values, avoiding unnecessary separators.
  • Optimize for readability. When concatenating strings that may include nulls, use `CONCAT_WS` to ensure a clean, readable output.
  • Error Handling: Ensure all arguments are valid data types. Passing incompatible data types may result in errors.
  • Keep performance in mind. While `CONCAT_WS` is efficient, it performs well compared to similar functions. However, consider the database size and complexity when applying it to large datasets, as performance can vary in complex queries.