Функция SQL Server CONCAT_WS()

В этом руководстве вы узнаете, как использовать функцию SQL Server CONCAT_WS() для объединения нескольких строк в одну строку с указанным разделителем.

Обзор функции 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;

На следующем рисунке показан частичный вывод:

SQL Server CONCAT_WS на примере

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;

На этом рисунке показан частичный вывод:

SQL Server CONCAT_WS с NULL

Обратите внимание, что вам необходимо изменить результат запроса с сетки на текст, чтобы увидеть вывод в указанном выше формате:

Результат SQL Server CONCAT_WS в текст

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 генерирует CSV-файл

Краткое содержание

  • Используйте функцию SQL Server CONCAT_WS() для объединения нескольких строк в одну строку с указанным разделителем.
Мирослав С.

Автор статей, ИБ-специалист