MySQL / MariaDB Объединить строки в одну строку - Функции CONCAT() и CONCAT_WS()

MySQL / MariaDB Объединить строки в одну строку - Функции CONCAT() и CONCAT_WS()

Коллеги всем привет.

В сегодняшней статье мы рассмотрим как можно в базе данных MySQL и MariaDB объединять строки в одну строку. Казалось бы, это достаточно простая задача, но не все так просто. Объединение полей строк в отдельное поле в наборе результатов возможно с помощью нескольких функций управления строками. За объединение строк в базе данных MySQL и MariaDB отвечают две функции CONCAT() и CONCAT_WS().

 

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

mysql_mariadb_concat_concat_ws

mysql_mariadb_concat_concat_ws


 

Функция CONCAT().

Синтаксис функции:

SELECT CONCAT(string_1,string_2,...) FROM table_name WHERE field_name = value

Функция может принимать один и более строк для объединения.

 

В первом варианте мы попробуем объединить два поля, имя и фамилию пользователя.

sql> SELECT CONCAT(first_name, ' ' ,last_name) AS fio FROM fio WHERE id = '1';

mysql_mariadb_concat_concat_ws

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

 

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

sql> SELECT CONCAT(first_name, ' ' ,last_name) AS fio FROM fio WHERE id = '1';

mysql_mariadb_concat_concat_ws

 

При объединении строк с помощью функции CONCAT() нужно учитывать одну очень важную деталь, если в одном из полей окажется NULL, то функция вернут NULL.

sql> SELECT CONCAT(first_name, middle_name) AS fio FROM fio WHERE id = '5';

mysql_mariadb_concat_concat_ws


 

Функция CONCAT_WS().

Синтаксис функции:

SELECT CONCAT_WS(separator, string_1,string_2,...) FROM table_name WHERE field_name = value

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

 

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

В первом варианте мы попробуем объединить два поля, имя и фамилию пользователя.

sql> SELECT CONCAT_WS('-',first_name, last_name) FROM fio WHERE id = 1;

mysql_mariadb_concat_concat_ws

 

Как мы помним из примера выше что если передать в функцию CONCAT значения NULL то и сама функция вернут NULL. С функцией CONCAT_WS все немного по другому, если в одном из полей окажется значения NULL то функция вернут значения того поля которые не является NULL.

sql> SELECT CONCAT_WS('-',first_name, middle_name) FROM fio WHERE id = 5;

mysql_mariadb_concat_concat_ws


 

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

 

ПОХОЖИЕ СТАТЬИ

MySQL - Генерация тестовых данных
MySQL - Генерация тестовых данных
MYSQL
Читать далее
MySQL / MariaDB Как получить id последней вставленной записи в таблице - LAST_INSERT_ID
MySQL / MariaDB Как получить id последней вставленной записи в таблице - LAST_INSERT_ID
MYSQL
Читать далее
MySQL / MariaDB Как преобразовать регистр символов - Функции UPPER и LOWER
MySQL / MariaDB Как преобразовать регистр символов - Функции UPPER и LOWER
MYSQL
Читать далее