Функция SUBSTRING SQL Server

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

Обзор функции SQL Server SUBSTRING()

Функция SUBSTRING() извлекает подстроку указанной длины, начиная с указанного места во входной строке.

Ниже показан синтаксис функции SUBSTRING():

SUBSTRING(input_string, start, length);

В этом синтаксисе:

  • input_string может быть символьным, двоичным, текстовым, текстовым или графическим выражением.
  • start — это целое число, которое указывает место, где начинается возвращаемая подстрока. Обратите внимание, что первый символ в input_string — 1, а не ноль.
  • length — положительное целое число, которое указывает количество символов возвращаемой подстроки. Функция SUBSTRING() выдает ошибку, если длина отрицательная. Если start + length > длины input_string, подстрока начнется с начала и будет включать оставшиеся символы input_string.

Примеры SQL Server SUBSTRING()

Давайте рассмотрим несколько примеров использования функции SUBSTRING(), чтобы понять, как она работает.

A) Использование функции SUBSTRING() с литеральными строками

В этом примере извлекается подстрока длиной 6, начиная с пятого символа, в строке «SQL Server SUBSTRING».

SELECT 
    SUBSTRING('SQL Server SUBSTRING', 5, 6) result;

Вот что получилось:

result
------
Server
(1 row affected)

Б) Использование функции SUBSTRING() со столбцами таблицы

Для демонстрации мы будем использовать таблицу sales.customers из образца базы данных.

клиенты

В этом примере функция SUBSTRING() используется для извлечения домена из адресов электронной почты клиентов:

SELECT 
    email, 
    SUBSTRING(
        email, 
        CHARINDEX('@', email)+1, 
        LEN(email)-CHARINDEX('@', email)
    ) domain
FROM 
    sales.customers
ORDER BY 
    email;

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

Пример SQL Server SUBSTRING с табличным столбцом

Как это работает.

Сначала мы использовали функцию CHARINDEX() для поиска символа '@' в письме. Домен будет начинаться с символа @ плюс один.

Затем мы использовали результат функции CHARINDEX() для определения:

  • Начальное местоположение домена: CHARINDEX('@', email) + 1
  • Длина домена: LEN(email)-CHARINDEX('@', email)

Чтобы подсчитать количество писем на домен, вы можете использовать следующий запрос:

SELECT 
    SUBSTRING(
        email, 
        CHARINDEX('@', email)+1, 
        LEN(email)-CHARINDEX('@', email)
    ) domain,
    COUNT(email) domain_count
FROM 
    sales.customers
GROUP BY
    SUBSTRING(
            email, 
            CHARINDEX('@', email)+1, 
            LEN(email)-CHARINDEX('@', email)
        );

Вот что получилось:

Пример SQL Server SUBSTRING с GROUP BY

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

Мирослав С.

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