Функция concat_ws() в PostgreSQL используется для объединения нескольких строк в одну строку с указанным разделителем. concat_ws означает «Concatenate With Separator» (Объединить с разделителем) и полезна для объединения нескольких столбцов или значений в одну строку с разделителем между каждым значением.

Синтаксис – функция concat_ws() в PostgreSQL

concat_ws(separator text, string1 text [, string2 text, …])

seperator: строка, которая будет использоваться в качестве разделителя между объединенными значениями.

string1, string2: строки для объединения.

Базовые примеры

Объединить несколько строк с помощью дефиса в качестве разделителя

SELECT concat_ws('-', 'Hello', 'PostgreSQL', 'World');

Объяснение:Объединяет «Hello», «PostgreSQL» и «World» с разделителем в виде дефиса (-) между строками.

Результат:

Объединить несколько строк с помощью пробела-разделителя

SELECT concat_ws(' ', 'Hello', 'PostgreSQL', 'World');

Объяснение:Объединяет «Hello», «PostgreSQL» и «World» с пробелом между строками.

Результат:

Использование concat_ws() в столбцах таблицы

Вы можете использовать concat_ws() для объединения значений из разных столбцов в таблице. Для демонстрации примеров давайте используем таблицу «employeetbl».

Объединить несколько столбцов с помощью пробела-разделителя

Вы можете использовать concat_ws() для создания столбца или форматированного строкового столбца, объединяющего несколько столбцов с разделителем-пробелом:

SELECT *, concat_ws(' ', first_name, last_name) AS fullname FROM employeetbl;

Объяснение:Объединяет столбцы first_name и last_name с пробелом между ними и сохраняет результат как столбец full_name.

Результат:

Объединить несколько столбцов с помощью дефиса-разделителя

Вы можете использовать concat_ws() для создания строки столбцов, объединяющей несколько столбцов с разделителями-дефисами (-).

SELECT *, concat_ws('-', first_name, last_name,eno::Text) AS employee_detail FROM employeetbl;

Объяснение:Объединяет столбцы first_name, last_name и eno с дефисом между всеми столбцами и сохраняет результат как столбец employee_detail.

Результат: