В этом руководстве вы узнаете, как использовать функцию SQL Server CONCAT_WS() для объединения нескольких строк в одну строку с указанным разделителем.
- Обзор функции SQL Server CONCAT_WS()
- Примеры функции SQL Server CONCAT_WS()
- 1) Использование функции CONCAT_WS() для объединения строк с разделителем
- 2) Использование функции CONCAT_WS() с табличными данными
- 3) Использование функции CONCAT_WS() с NULL
- 4) Использование функции CONCAT_WS() для генерации CSV-данных
- Краткое содержание
Обзор функции SQL Server CONCAT_WS()
Функция CONCAT_WS() позволяет объединять несколько строк в строку с указанным разделителем. CONCAT_WS() означает объединение с разделителем.
Вот синтаксис функции CONCAT_WS():
CONCAT_WS(separator,string1,string2,[...stringN]);
В этом синтаксисе:
- разделитель: разделитель, который используется для разделения объединенных строк.
- string1, string2, …: строки, которые вы хотите объединить.
Функция CONCAT_WS() возвращает одну строку, сформированную путем объединения всех входных строк с указанным разделителем.
Обратите внимание, что CONCAT_WS() требует как минимум две входные строки. Это означает, что если передать ноль или один входной строковый аргумент, функция CONCAT_WS() выдаст ошибку.
Функция CONCAT_WS() обрабатывает NULL как пустую строку типа VARCHAR(1). Она также не добавляет разделитель между NULL. Поэтому функция CONCAT_WS() может чисто объединять строки, которые могут иметь пустые значения.
Примеры функции SQL Server CONCAT_WS()
Давайте рассмотрим несколько примеров использования функции CONCAT_WS().
1) Использование функции CONCAT_WS() для объединения строк с разделителем
В следующем примере функция CONCAT_WS() используется для объединения двух литеральных строк в одну с помощью пробела:
SELECT CONCAT_WS(' ', 'John', 'Doe') full_name;
Вот что получилось:
full_name --------- John Doe (1 row affected)
2) Использование функции CONCAT_WS() с табличными данными
В следующем операторе функция CONCAT_WS() используется для объединения значений в столбцах last_name и first_name таблицы sales.customers с использованием запятой(,) в качестве разделителя:
SELECT first_name, last_name, CONCAT_WS(', ', last_name, first_name) full_name FROM sales.customers ORDER BY first_name, last_name;
На следующем рисунке показан частичный вывод:
3) Использование функции CONCAT_WS() с NULL
Следующий оператор демонстрирует, как функция CONCAT_WS() обрабатывает входные строки, имеющие значения NULL:
SELECT CONCAT_WS(',', 1, 2, NULL, NULL, 3);
Вывод следующий:
result ---------------------------------------- 1,2,3 (1 row affected)
Выходные данные указывают на то, что функция CONCAT_WS() игнорирует NULL и не добавляет разделитель между значениями NULL.
Следующий пример объединяет данные клиентов для форматирования адресов клиентов. Если у клиента нет номера телефона, функция CONCAT_WS() игнорирует его:
SELECT CONCAT_WS ( CHAR(13), CONCAT(first_name, ' ', last_name), phone, CONCAT(city, ' ', state), zip_code, '---' ) customer_address FROM sales.customers ORDER BY first_name, last_name;
На этом рисунке показан частичный вывод:
Обратите внимание, что вам необходимо изменить результат запроса с сетки на текст, чтобы увидеть вывод в указанном выше формате:
4) Использование функции CONCAT_WS() для генерации CSV-данных
В этом операторе в качестве разделителя используется запятая(,), которая объединяет значения в столбцах first_name, last_name и email для создания CSV-файла:
SELECT CONCAT_WS(',', first_name, last_name, email) FROM sales.customers ORDER BY first_name, last_name;
Частичный вывод выглядит следующим образом:
Краткое содержание
- Используйте функцию SQL Server CONCAT_WS() для объединения нескольких строк в одну строку с указанным разделителем.