Объединение двух столбцов в MySQL с использованием COALESCE

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы объединить столбцы col1 и col2 в новый столбец combined_col, используйте функцию CONCAT():

SQL
Скопировать код
SELECT CONCAT(`col1`, ' ', `col2`) AS `combined_col` FROM `table`;

Если хочется добавить разделитель и исключить значения NULL, применяйте CONCAT_WS():

SQL
Скопировать код
SELECT CONCAT_WS(' ', `col1`, `col2`) AS `combined_col` FROM `table`;
Кинга Идем в IT: пошаговый план для смены профессии

Обработка специфичных типов данных и значений NULL

Когда объединяется столбцы с разными типами данных, приведите их к единому типу:

SQL
Скопировать код
SELECT CONCAT(CAST(`numeric_col` AS CHAR), ' ', `string_col`) AS `combined_col` FROM `table`;

Чтобы не допустить усечения текста из-за переполнения столбца, ограничьте размер текста:

SQL
Скопировать код
SELECT CONCAT(LEFT(`long_text_col`, 255), ' – ', `short_text_col`) AS `combined_col` FROM `table`;

CONCAT_WS() игнорирует значения NULL, когда как CONCAT() вернёт NULL, если как минимум один из аргументов равен NULL:

SQL
Скопировать код
SELECT CONCAT_WS(' ', `col1`, `col2`) AS `combined_col` FROM `table`;

SELECT CONCAT(`col1`, ' ', `col2`) AS `combined_col` FROM `table`;

Выбор псевдонима, как выбор имени супергероя

Псевдонимы (aliases) упрощают идентификацию объединённых столбцов. Вот пример использования псевдонима:

SQL
Скопировать код
SELECT CONCAT(`FirstName`, ' ', `LastName`) AS `FullName` FROM `Users`;

Это особо удобно, когда данные экспортируются в CSV-файлы.

Визуализация

Пусть у нас имеются два цветных источника света: синий (столбец A) и жёлтый (столбец B). Используя SQL-шаблон, мы создадим новый зелёный свет (объединённый столбец):

Markdown
Скопировать код
Синий свет (💡🔵): Синий
Желтый свет (💡🟡): Желтый

SELECT AS выступает в роли микшера света:

Markdown
Скопировать код
💡🔵 + 💡🟡: 💡✳️

Точно также, как синий и жёлтый свет порождают зелёный, два столбца объединяются в один при помощи SELECT AS.

Борьба со сложными случаями

Если два столбца могут содержать NULL, примените IFNULL() для гарантированной работы кода:

SQL
Скопировать код
SELECT IFNULL(CONCAT(`col1`, ' ', `col2`), 'Default Value') AS `combined_col` FROM `table`;

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

SQL
Скопировать код
SELECT CONCAT(`date_col`, ' ', `time_col`) AS `Timestamp` FROM `table`;

Объединение многоязычных данных требует внимательности к кодировке символов:

SQL
Скопировать код
SELECT CONCAT(_utf8mb4'囍', ' ', `EnglishCol`) AS `combined_col` FROM `table`;

Полезные материалы

  1. MySQL :: MySQL 8.0 Справочник по функциям и операциям со строками — Официальная документация MySQL на функции работы со строками, включая CONCAT.
  2. Функция CONCAT() в MySQL — урок по использованию функции CONCAT() в MySQL.
  3. SQL Алиасы — руководство по использованию SQL алиасов с помощью ключевого слова AS.
  4. CONCAT (Transact-SQL) – SQL Server | Microsoft Learn — сравнение функции CONCAT() в SQL Server и MySQL.
  5. MySQL :: MySQL 8.0 Справочник по строковым литералам — Руководство по работе со строковыми литералами и специальными символами в MySQL.