Функция Substring() в SQL Server: пример использования
⚡ Умное резюме
Функция SUBSTRING() в SQL Server, напримерtracФункция возвращает часть символа, текста или двоичного выражения, задавая заданное количество символов из выбранной начальной позиции, и органично сочетается с функцией CHARINDEX для анализа на основе разделителей.
Что такое Подстрока()?
Функция SUBSTRING() находится в SQL Это позволяет пользователю извлекать подстроку из любой заданной строки по мере необходимости. Например, функция SUBSTRING().tracФункция SUBSTRING() возвращает строку заданной длины, начиная с заданной позиции во входной строке. В SQL функция SUBSTRING() предназначена для возврата определенной части строки.
Синтаксис для подстроки()
SUBSTRING(Expression, Starting Position, Total Length)
Вот:
- Выражение SUBSTRING() в SQL Server Может быть любым символом, двоичными данными, текстом или изображением. Выражение — это исходная строка, из которой извлекается подстрока.
- Параметр «Начальная позиция» определяет позицию в выражении, с которой должна начинаться новая подстрока.
- Общая длина — это ожидаемая общая длина результирующей подстроки, полученной из выражения, начиная с начальной позиции.
Правила использования SUBSTRING()
- В функции MS SQL SUBSTRING() все три аргумента являются обязательными.
- Если начальная позиция превышает максимальное количество символов в выражении, функция SUBSTRING() в SQL Server ничего не возвращает.
- Общая длина может превышать максимальную длину исходной строки. В этом случае результирующая подстрока будет представлять собой всю строку, начиная с начальной позиции в выражении и до последнего символа выражения.
Приведенная ниже диаграмма иллюстрирует использование функции SUBSTRING() в SQL Server:
Примеры подстрок T-SQL
Предположение: Предположим, у нас есть таблица с именем 'Guru'99' с двумя столбцами и четырьмя строками, как показано ниже. Мы будем использовать этот 'GuruТаблица 99 в следующих примерах:
Запрос 1: Функция SUBSTRING() в SQL позволяет получить строку длиной меньше максимальной общей длины выражения.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;
Результат: На диаграмме ниже подстрока столбца 'Tutorial_name' отображается в столбце 'SUB'. Начальная позиция — 1, длина — 2, поэтому возвращаются первые два символа:
Запрос 2: Функция SUBSTRING() в SQL Server позволяет получить выражение длиной, превышающей максимальную общую длину выражения.
SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;
Результат: На диаграмме ниже подстрока столбца 'Tutorial_name' отображается в столбце 'SUB'. Несмотря на то, что длина подстроки превышает максимальную общую длину выражения, ошибка не возникает, и запрос возвращает полную строку, начиная с начальной позиции:
Использование подстроки с индексом в SQL Server
Очень распространенное практическое применение функции SUBSTRING() — это...tracТекст, расположенный до или после разделителя, например, домен в адресе электронной почты. Функция SUBSTRING() сама по себе требует фиксированной начальной позиции, но позиция разделителя меняется от строки к строке. Функция CHARINDEX() решает эту проблему, возвращая позицию символа внутри строки:
CHARINDEX(substring_to_find, expression [, start_location])
Вложенность функции CHARINDEX() в функцию SUBSTRING() делает начальную позицию динамической. В приведенном ниже примере находится... @ символ и возвращает все, что следует за ним. A переменная содержит значение образца:
DECLARE @Email VARCHAR(50) = 'john.doe@guru99.com'; SELECT SUBSTRING(@Email, CHARINDEX('@', @Email) + 1, LEN(@Email)) AS Domain;
Здесь функция CHARINDEX('@', @Email) определяет позицию символа @, добавляя 1, перемещаясь дальше, а затем функция SUBSTRING() выполняет операцию ex.tracЭто оставшиеся символы. Для указанного выше значения запрос возвращает домен. guru99.comЭтот шаблон CHARINDEX-plus-SUBSTRING является стандартным способом разбора структурированных строк в T-SQL.
SUBSTRING против LEFT и RIGHT в SQL Server
SQL Server также предоставляет функции LEFT() и RIGHT() для извлечения символов из начала или конца строки. Они короче в написании, но ограничены двумя концами. Функция SUBSTRING() является наиболее гибкой, поскольку может начинаться с любой позиции. В таблице ниже приведено их сравнение:
| Функция | аргументы | Extracтс из | Эквивалентная функция SUBSTRING() |
| LEFT(выражение, n) | 2 | Начало строки | SUBSTRING(выражение, 1, n) |
| ПРАВО (выражение, n) | 2 | Конец строки | SUBSTRING(expression, LEN(expression) – n + 1, n) |
| SUBSTRING(выражение, начало, длина) | 3 | Любая позиция | Непригодный |
Вкратце, функции LEFT() и RIGHT() — это удобные сокращения для обозначения концов строки, а функция SUBSTRING() обрабатывает общий случай, включая символы, взятые из середины строки.
Отрицательные, нулевые и NULL-аргументы в функции SUBSTRING
Помимо основных правил, полезно знать, как работает функция SUBSTRING() на границах. Когда начальная позиция равна нулю или отрицательному значению, SQL Server вычисляет эффективную длину (начальная позиция + длина – 1) и начинает чтение с позиции один. Если какой-либо аргумент равен NULL, результат также равен NULL. Приведенная ниже таблица проверена по официальным данным. SUBSTRING (Transact-SQL) В справке приведены следующие случаи:
| Позвонить | Результат | Причина |
| ПОДСТРОКА('Guru99', 1, 4) | Guru | Обычный вызов: четыре символа, начиная с первой позиции. |
| ПОДСТРОКА('Guru99', 0, 3) | Gu | Начните с единицы: эффективная длина равна 0 + 3 – 1 = 2. |
| ПОДСТРОКА('Guru99', 4, 100) | u99 | Функция length beyond the string возвращает остаток от деления строки без ошибок. |
| ПОДСТРОКА('Guru99', 3, NULL) | NULL, | Аргумент, равный NULL, делает весь результат равным NULL. |
Знание этих крайних случаев позволяет избежать неожиданностей при вычислении начальной позиции на основе другого столбца или... переменная Это может быть ноль или NULL.





