Функция CONCAT_WS предназначена для сложения строк при выборке из базы данных с использованием разделителя. Строками обычно выступают поля таблиц.

См. также функцию CONCAT, которая складывает строки без использования разделителя.

См. также функцию GROUP_CONCAT, которая складывает содержимое одного поля из разных строк.

Синтаксис

SELECT CONCAT_WS(разделитель, поле1, поле2...) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример

В данном примере при выборке из базы создается новое поле concat_ws, в котором одновременно сольются через дефис 3 поля - age, name и salary:

SELECT *, CONCAT_WS('-', age, name, salary) as concat_ws FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
concat_ws
объединенное поле
1 Дима 23 300 23-Дима-300
2 Петя 24 400 24-Петя-400
3 Вася 25 500 25-Вася-500

Пример

А теперь кроме полей из базы добавится еще и строка '!!!':

SELECT *, CONCAT_WS('-', age, '!!!', salary) as concat_ws FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
concat_ws
объединенное поле
1 Дима 23 300 23-!!!-300
2 Петя 24 400 24-!!!-400
3 Вася 25 500 25-!!!-500

Меняем таблицу для примеров

Остальные примеры будут по этой таблице workers:

id
айди
name
имя
age
возраст
salary
зарплата
separator
разделитель
1 Дима 23 300 -
2 Петя 24 400 @
3 Вася 25 500 !

Пример

Разделителем может быть не только строка, но и поле таблицы. Давайте сделаем содержимое поля separator разделителем между age, name, salary:

SELECT *, CONCAT_WS(separator, age, name, salary) as concat_ws FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
separator
разделитель
concat_ws
объединенное поле
1 Дима 23 300 - 23-Дима-300
2 Петя 24 400 @ 24@Петя@400
3 Вася 25 500 ! 25!Вася!500