Перейти к содержимому
Последнее обновление

CONCAT

Описание​

Функция CONCAT последовательно объединяет несколько строк в одну. Она принимает переменное число аргументов и относится к базовым и наиболее часто используемым функциям обработки строк. Она широко применяется для объединения данных, формирования отчётов и динамического построения SQL-запросов. Обратите внимание: если хотя бы один аргумент равен NULL, весь результат будет NULL.

Синтаксис​

CONCAT(<expr> [, <expr> ...])

Параметры​

ПараметрОписание
<expr>Строковое выражение для объединения: строковая константа, имя столбца или другое выражение. Тип: VARCHAR

Возвращаемое значение​

Возвращает значение типа VARCHAR, представляющее собой строку, полученную объединением всех аргументов.

Правила объединения:

  • Строки объединяются в порядке передачи аргументов
  • Поддерживается любое число аргументов (не менее 1)
  • Поддерживается корректное объединение многобайтовых символов UTF-8
  • Числа и значения других типов автоматически преобразуются в строки

Особые случаи:

  • Если хотя бы один аргумент равен NULL, возвращается NULL (это основное отличие от CONCAT_WS)
  • Если аргументы не указаны, возникает синтаксическая ошибка
  • Аргументы с пустыми строками не влияют на результат объединения
  • Допускается сочетание строковых значений со значениями других типов

Примеры​

  1. Простое объединение строк
SELECT CONCAT('a', 'b'), CONCAT('a', 'b', 'c');
+------------------+-----------------------+
| CONCAT('a', 'b') | CONCAT('a', 'b', 'c') |
+------------------+-----------------------+
| ab | abc |
+------------------+-----------------------+
  1. Обработка значений NULL (ключевая особенность)
SELECT CONCAT('a', NULL, 'c'), CONCAT('hello', NULL);
+------------------------+---------------------+
| CONCAT('a', NULL, 'c') | CONCAT('hello', NULL) |
+------------------------+---------------------+
| NULL | NULL |
+------------------------+---------------------+
  1. Обработка пустых строк
SELECT CONCAT('hello', '', 'world'), CONCAT('', 'test', '');
+-----------------------------+------------------------+
| CONCAT('hello', '', 'world') | CONCAT('', 'test', '') |
+-----------------------------+------------------------+
| helloworld | test |
+-----------------------------+------------------------+
  1. Сочетание чисел и строк
SELECT CONCAT('User', 123), CONCAT('Price: $', 99.99);
+---------------------+---------------------------+
| CONCAT('User', 123) | CONCAT('Price: $', 99.99) |
+---------------------+---------------------------+
| User123 | Price: $99.99 |
+---------------------+---------------------------+
  1. Объединение нескольких аргументов
SELECT CONCAT('A', 'B', 'C', 'D', 'E'), CONCAT('1', '2', '3', '4', '5');
+----------------------------------+----------------------------------+
| CONCAT('A', 'B', 'C', 'D', 'E') | CONCAT('1', '2', '3', '4', '5') |
+----------------------------------+----------------------------------+
| ABCDE | 12345 |
+----------------------------------+----------------------------------+
  1. Объединение многобайтовых символов UTF-8
SELECT CONCAT('ṭṛì', ' ', 'ḍḍumai'), CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai');
+------------------------------+--------------------------------------+
| CONCAT('ṭṛì', ' ', 'ḍḍumai') | CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai') |
+------------------------------+--------------------------------------+
| ṭṛì ḍḍumai | Hello ṭṛì ḍḍumai |
+------------------------------+--------------------------------------+
  1. Формирование путей и URL
SELECT CONCAT('/home/', 'user/', 'file.txt'), CONCAT('https://', 'www.example.com', '/api');
+--------------------------------------+----------------------------------------------+
| CONCAT('/home/', 'user/', 'file.txt') | CONCAT('https://', 'www.example.com', '/api') |
+--------------------------------------+----------------------------------------------+
| /home/user/file.txt | https://www.example.com/api |
+--------------------------------------+----------------------------------------------+
  1. Формирование адресов электронной почты
SELECT CONCAT('user', '@', 'example.com'), CONCAT('admin.', 'support', '@', 'company.org');
+------------------------------------+-----------------------------------------------+
| CONCAT('user', '@', 'example.com') | CONCAT('admin.', 'support', '@', 'company.org') |
+------------------------------------+-----------------------------------------------+
| user@example.com | admin.support@company.org |
+------------------------------------+-----------------------------------------------+