Функция Substring() в SQL Server: пример использования

⚡ Умное резюме

Функция SUBSTRING() в SQL Server, напримерtracФункция возвращает часть символа, текста или двоичного выражения, задавая заданное количество символов из выбранной начальной позиции, и органично сочетается с функцией CHARINDEX для анализа на основе разделителей.

  • ✂️ Цель: Функция SUBSTRING() возвращает определённую часть строки, заданную исходным выражением, начальной позицией и длиной.
  • 🔢 Три аргумента: В функции SQL Server SUBSTRING() обязательно должны быть указаны выражение, начальная позиция и общая длина.
  • 📍 Индекс, основанный на единице: Начальная позиция отсчитывается с единицы, поэтому первый символ считается первой позицией, что позволяет избежать ошибок, связанных с отставанием на единицу.
  • 🔎 С помощью CHARINDEX: Сочетание функций SUBSTRING() и CHARINDEX() позволяет найти разделитель и...tracЭто текст, предшествующий ему или следующий за ним.
  • ↔️ В сравнении с ЛЕВОЙ и ПРАВОЙ стороной: В отличие от LEFT() и RIGHT(), SUBSTRING() не является примером использования LEFT().tracПерсонажи могут быть представлены с любой позиции, а не только с концов.
  • ⚠️ Крайние случаи: Если длина строки равна NULL, возвращается NULL, а если длина превышает длину строки, возвращается остаток без возникновения ошибки.

Функция SUBSTRING() в SQL Server с примерами на T-SQL.

Что такое Подстрока()?

Функция 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:

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

Примеры подстрок T-SQL

Предположение: Предположим, у нас есть таблица с именем 'Guru'99' с двумя столбцами и четырьмя строками, как показано ниже. Мы будем использовать этот 'GuruТаблица 99 в следующих примерах:

GuruПример таблицы 99 со столбцами Tutorial_ID и Tutorial_name, используемыми в примерах SUBSTRING.

Запрос 1: Функция SUBSTRING() в SQL позволяет получить строку длиной меньше максимальной общей длины выражения.

SELECT Tutorial_name, SUBSTRING(Tutorial_name,1,2) As SUB from Guru99;

Результат: На диаграмме ниже подстрока столбца 'Tutorial_name' отображается в столбце 'SUB'. Начальная позиция — 1, длина — 2, поэтому возвращаются первые два символа:

В результирующей таблице первые два символа имени учебного пособия (Tutorial_name) будут отображаться в столбце SUB.

Запрос 2: Функция SUBSTRING() в SQL Server позволяет получить выражение длиной, превышающей максимальную общую длину выражения.

SELECT Tutorial_name, SUBSTRING(Tutorial_name,2,8) As SUB from Guru99;

Результат: На диаграмме ниже подстрока столбца 'Tutorial_name' отображается в столбце 'SUB'. Несмотря на то, что длина подстроки превышает максимальную общую длину выражения, ошибка не возникает, и запрос возвращает полную строку, начиная с начальной позиции:

В сетке результатов возвращается остаток от деления Tutorial_name, если запрошенная длина превышает длину строки.

Использование подстроки с индексом в 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.

Часто задаваемые вопросы (FAQ)

SQL Server использует функцию SUBSTRING(); SUBSTR() — это название, используемое в Oracle и MySQLОбе функции возвращают часть строки, но SUBSTRING() является стандартной функцией Transact-SQL, поэтому SUBSTR() не будет работать в SQL Server.

Да. Поскольку функция SUBSTRING() возвращает значение, она может использоваться в предложениях WHERE, SELECT и ORDER BY. Фильтрация по SUBSTRING() обычно предотвращает поиск по индексу, поэтому шаблон LIKE часто оказывается быстрее для поиска по префиксу.

Да, но SQL Server сначала преобразует значение в строку, либо неявно, либо с помощью CAST или CONVERT. Начальная позиция и длина затем подсчитывают символы, а не цифры или части даты, поэтому форматируйте значение внимательно.

Трехпараметрическая форма ведет себя аналогично, но детали отличаются. MySQL Также допускается использование функции SUBSTR() и отрицательных начальных позиций, в то время как SQL Server использует функцию SUBSTRING() и обрабатывает начало ниже единицы, используя правило эффективной длины.

Функция SUBSTRING() возвращает данные той же категории, что и входные: varchar для символьных данных, nvarchar для текста в формате Unicode и varbinary для бинарных выражений. Длина зависит от запрашиваемой подстроки, а не от всего исходного столбца.

Обернитеping Наличие столбца в функции SUBSTRING() внутри предложения WHERE делает предикат несаргативным, поэтому SQL Server не может использовать поиск по индексу для этого столбца. Для префиксных совпадений обычно лучше работает шаблон LIKE 'value%'.

Да. Второй пилот GitHub Можно создавать выражения SUBSTRING() и CHARINDEX(), включая разбор на основе разделителей, из командной строки на естественном языке. Всегда проверяйте начальную позицию, длину и индексацию с 1 перед выполнением запроса.

Искусственный интеллект и помощники на основе машинного обучения переводят простые правила на английском языке в комбинации функций SUBSTRING(), CHARINDEX(), LEFT() и RIGHT(), предлагают варианты расчета длины и отмечают ошибки, возникающие при отклонении на единицу. Разработчик проверяет каждое предложение на корректность перед его внедрением.

Подведем итог этой публикации следующим образом: