Последнее обновление
CONCAT
Описание
Функция CONCAT последовательно объединяет несколько строк в одну. Она принимает переменное число аргументов и относится к базовым и наиболее часто используемым функциям обработки строк. Она широко применяется для объединения данных, формирования отчётов и динамического построения SQL-запросов. Обратите внимание: если хотя бы один аргумент равен NULL, весь результат будет NULL.
Синтаксис
CONCAT(<expr> [, <expr> ...])
Параметры
| Параметр | Описание |
|---|---|
<expr> | Строковое выражение для объединения: строковая константа, имя столбца или другое выражение. Тип: VARCHAR |
Возвращаемое значение
Возвращает значение типа VARCHAR, представляющее собой строку, полученную объединением всех аргументов.
Правила объединения:
- Строки объединяются в порядке передачи аргументов
- Поддерживается любое число аргументов (не менее 1)
- Поддерживается корректное объединение многобайтовых символов UTF-8
- Числа и значения других типов автоматически преобразуются в строки
Особые случаи:
- Если хотя бы один аргумент равен NULL, возвращается NULL (это основное отличие от CONCAT_WS)
- Если аргументы не указаны, возникает синтаксическая ошибка
- Аргументы с пустыми строками не влияют на результат объединения
- Допускается сочетание строковых значений со значениями других типов
Примеры
- Простое объединение строк
SELECT CONCAT('a', 'b'), CONCAT('a', 'b', 'c');
+------------------+-----------------------+
| CONCAT('a', 'b') | CONCAT('a', 'b', 'c') |
+------------------+-----------------------+
| ab | abc |
+------------------+-----------------------+
- Обработка значений NULL (ключевая особенность)
SELECT CONCAT('a', NULL, 'c'), CONCAT('hello', NULL);
+------------------------+---------------------+
| CONCAT('a', NULL, 'c') | CONCAT('hello', NULL) |
+------------------------+---------------------+
| NULL | NULL |
+------------------------+---------------------+
- Обработка пустых строк
SELECT CONCAT('hello', '', 'world'), CONCAT('', 'test', '');
+-----------------------------+------------------------+
| CONCAT('hello', '', 'world') | CONCAT('', 'test', '') |
+-----------------------------+------------------------+
| helloworld | test |
+-----------------------------+------------------------+
- Сочетание чисел и строк
SELECT CONCAT('User', 123), CONCAT('Price: $', 99.99);
+---------------------+---------------------------+
| CONCAT('User', 123) | CONCAT('Price: $', 99.99) |
+---------------------+---------------------------+
| User123 | Price: $99.99 |
+---------------------+---------------------------+
- Объединение нескольких аргументов
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 |
+----------------------------------+----------------------------------+
- Объединение многобайтовых символов UTF-8
SELECT CONCAT('ṭṛì', ' ', 'ḍḍumai'), CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai');
+------------------------------+--------------------------------------+
| CONCAT('ṭṛì', ' ', 'ḍḍumai') | CONCAT('Hello', ' ', 'ṭṛì', ' ', 'ḍḍumai') |
+------------------------------+--------------------------------------+
| ṭṛì ḍḍumai | Hello ṭṛì ḍḍumai |
+------------------------------+--------------------------------------+
- Формирование путей и 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 |
+--------------------------------------+----------------------------------------------+
- Формирование адресов электронной почты
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 |
+------------------------------------+-----------------------------------------------+