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
Читати далі