Функция 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 |