Self-Learning – видеокурсы и книги по IT

Всем привет! Сегодня мы рассмотрим несколько способов конкатенации строк, которые можно использовать в Microsoft SQL Server на языке T-SQL.

Конкатенация строк в T-SQL. Способы используемые в Microsoft SQL Server

Что такое конкатенация строк

Конкатенация – это операция соединения нескольких текстовых строк в одну.

Например, если выполнить конкатенацию двух отдельных строк «Язык» и «SQL», то получится одна строка «ЯзыкSQL».

В SQL конкатенация используется для соединения текстовых значений нескольких столбцов, или соединения значения столбца с константной строкой.

Конкатенация строк в Microsoft SQL Server

В Microsoft SQL Server на языке T-SQL мы можем использовать несколько способов для конкатенации строк, в частности два: оператор + и функцию CONCAT.

Давайте подробнее рассмотрим каждый из этих способов. Однако сначала давайте создадим тестовые данные, чтобы наглядно видеть результат работы конкатенации строк.

Исходные данные для примеров

Допустим, что у нас есть таблица, которая содержит Фамилию Имя Отчество клиентов. При этом каждую часть ФИО мы храним в отдельном столбце.


CREATE TABLE Customers (
   Customer_Id INT NOT NULL IDENTITY(1,1),
   SurName VARCHAR(100) NULL,
   FirstName VARCHAR(100) NULL,
   Patronymic VARCHAR(100) NULL
);

GO

INSERT INTO Customers (SurName, FirstName, Patronymic)
   VALUES ('Иванов', 'Сергей', 'Иванович'),
          ('Попов', 'Роман', 'Алексеевич'),
          ('Сергеев', 'Петр', 'Вячеславович'),
          ('John', 'Smith', NULL),
          ('Oliver', 'Adamson', NULL);

GO

SELECT * FROM Customers;

Скриншот 1

Примечание! Если Вы не знаете, что делает вышеуказанная SQL инструкция, то рекомендую пройти мой курс по изучению языка T-SQL – https://self-learning.ru/course/t-sql-level-1

Данный курс ориентирован на начинающих и на нем рассматриваются все базовые конструкции языка SQL, включая вышеперечисленные.

Использование оператора +

Первый и часто используемый способ конкатенации строк в Microsoft SQL Server, который реализован уже очень давно и является, наверное, классическим – это способ с использованием оператора +.

Принцип его работы следующий: мы указываем текстовое значение, им может быть как значение из столбца, так и константное текстовое значение, после него пишем +, а затем другое текстовое значение, которое мы хотим присоединить к первому текстовому значению. И таким образом мы можем объединить несколько строк в одну строку.

Синтаксис примерно следующий

Строка1 + Строка2 + Строка3 +…… Строка n = Итоговая строка

А теперь давайте представим, что нам необходимо вывести Фамилию Имя Отчество из нашей таблицы в одной строке.

Для этого мы можем использовать оператор + и написать следующий запрос.


SELECT SurName + ' ' + FirstName + ' ' + Patronymic AS [ФИО]
FROM Customers;

Скриншот 2

В данном случае после каждого столбца мы вставляем еще и пробел, для того чтобы ФИО не сливалось в одну непрерывную строку.

Как было отмечено ранее, вместо названия столбца мы можем указывать любую текстовую строку, например, следующим образом.


SELECT 'Фамилия' + 'Имя' + 'Отчество' AS [ФИО]

Скриншот 3

Вы наверняка заметили, что в первом примере у некоторых строк результирующего набора данных у нас выводится значение NULL. Это происходит потому, что в некоторых записях нашей таблицы нет значений, т.е. в них хранится NULL, в частности у записей с идентификаторами 4 и 5.

А оператор + в случае соединения нормального значения со значением NULL будет возвращать NULL. Иными словами, если в любой из строк, которые мы соединяем с помощью оператора +, будет NULL, то результат всей конкатенации также будет NULL. И это является одним из главных недостатков данного способа конкатенации строк в T-SQL.

Конечно же, мы можем легко устранить данную проблему, обернув столбец, например, функцией ISNULL, которая возвращает значение второго параметра, если значение первого NULL.

Таким образом, чтобы предотвратить появление NULL значений в нашем запросе, мы можем с помощью функции ISNULL проверять значения столбцов и, если там NULL, выводить просто пусто.


SELECT ISNULL(SurName,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(Patronymic,'') AS [ФИО]
FROM Customers;

Скриншот 4

Как видим, в данном случае результат уже более корректен.

Использование функции CONCAT

Вторым способом конкатенации строк в Microsoft SQL Server является способ с использованием функции CONCAT.

CONCAT – функция SQL, которая соединяет несколько текстовых значений в одну строку, другими словами, выполняет конкатенацию строк.

В данной функции уже реализована проверка на NULL, и нам не требуется самостоятельно проверять столбец на наличие таких значений и пропускать все значения столбца через функцию ISNULL.

Однако данная функция появилось лишь в 2012 версии SQL Server, т.е. до 2012 версии можно использовать только оператор +.

Принцип работы функции CONCAT следующий: она объединяет все параметры, которые мы передаем в эту функцию, в одну строку. Параметров можно передавать несколько, а в качестве них можно указывать как константную строку, т.е. просто текст, так и столбец таблицы.

Давайте напишем SQL запрос, который будет эквивалентен нашему предыдущему запросу.


SELECT CONCAT(SurName, ' ', FirstName, ' ', Patronymic) AS [ФИО]
FROM Customers;

Скриншот 5

Как видим, результат точно такой же.

Заметка! Для изучения всех возможностей SQL и языка T-SQL рекомендую посмотреть мои видеокурсы – https://self-learning.ru/courses/t-sql.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Материал в видео формате

Теги: #
Понравилась статья? Поделитесь с друзьями:
Share on VK
VK
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on Tumblr
Tumblr
Share on Reddit
Reddit
Email this to someone
email

Авторские онлайн-курсы по T-SQL

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх