Поделиться через


предварительная версия REGEXP_SUBSTR (Transact-SQL)

Применимо к: SQL Server 2025 (17.x) — предварительная версия базы данных SQLAzure Для Управляемого экземпляра SQL Azureв Microsoft Fabric

Заметка

В качестве предварительной версии технология, представленная в этой статье, подлежит дополнительным условиям использования для предварительных версий Microsoft Azure.

Возвращает одно вхождение подстроки строки, которая соответствует шаблону регулярного выражения. Если совпадение не найдено, возвращается NULL.

REGEXP_SUBSTR
     (
      string_expression,
      pattern_expression [, start [, occurrence [, flags [, group ] ] ] ]
     )

Заметка

Регулярные выражения доступны в Управляемом экземпляре SQL Azure, настроенном с помощью политики обновления Always-up-to-date .

Аргументы

string_expression

Выражение символьной строки.

Может быть константой, переменной или столбцом символьной строки.

Типы данных: char, nchar nchar, varcharили nvarchar nvarchar.

Заметка

REGEXP_LIKE REGEXP_COUNT Функции REGEXP_INSTRи функции поддерживают бизнес-типы (varchar(max) и nvarchar(max)) до 2 МБ для параметра string_expression.

выражение_образца

Шаблон регулярного выражения для сопоставления. Обычно текстовый литерал.

Типы данных: char, nchar nchar, varcharили nvarchar nvarchar. pattern_expression поддерживает максимальную длину символов в 8 000 байт.

запуска

Укажите начальную позицию для поиска в строке поиска. Необязательный. Тип int или bigint.

Нумерирование основано на 1, то есть первый символ в выражении 1, а значение должно быть >= 1. Если начальная выражение меньше 1, возвращает ошибку. Если начальная длина выражения превышает длину string_expression, функция возвращается NULL. Значение по умолчанию — 1.

вхождения

Выражение (положительное целое число), указывающее, какое вхождение выражения шаблона в исходной строке следует искать или заменять. По умолчанию используется 1. Выполняет поиск первого символа string_expression. Для положительного целого числа n он ищет n-е вхождение, начиная с первого символа после первого вхождения pattern_expression, и т. д.

флаги

Один или несколько символов, указывающих модификаторы, используемые для поиска совпадений. Тип varchar или charс не более чем 30 символами.

Например, ims. Значение по умолчанию — c. Если указана пустая строка (' '), она будет рассматриваться как значение по умолчанию ('c'). Укажите c или любые другие символьные выражения. Если флаг содержит несколько противоречивых символов, SQL Server использует последний символ.

Например, если указать ic regex возвращает соответствие регистра.

Если значение содержит символ, отличный от указанных в поддерживаемых значений флагов, запрос возвращает ошибку, как показано в следующем примере:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Поддерживаемые значения флагов
Флаг Описание
i Без учета регистра (по умолчанию false)
m Многострочный режим: ^ и $ сопоставление начальной и конечной строки в дополнение к начальной и конечной строке (по умолчанию false)
s Разрешить . совпадение \n (по умолчанию false)
c Учет регистра (по умолчанию true)

группы

Указывает, какая группа отслеживания (подэкспрессия) pattern_expression определяет позицию в string_expression возвращаемой. Группа захвата (подэкспрессия) представляет собой фрагмент шаблона, заключенного в скобки и может быть вложен. Группы захвата нумеруются в том порядке, в котором отображаются их левые скобки. Тип данных группы будет целым числом, и значение должно быть больше или равно 0 и не должно быть больше числа групп записи (вложенных выражений) в pattern_expression. Значение группы по умолчанию равно 0, указывающее, что позиция основана на строке, которая соответствует всему шаблону.

Возвращаемое значение

Струна.

Примеры

Извлеките доменное имя из адреса электронной почты.

SELECT REGEXP_SUBSTR(EMAIL, '@(.+)$', 1, 1, 'i', 1) AS DOMAIN
FROM CUSTOMERS;

Найдите первое слово в предложении, которое начинается с гласной.

SELECT REGEXP_SUBSTR(COMMENT, '\b[aeiou]\w*', 1, 1, 'i') AS WORD
FROM FEEDBACK;

Получите последние четыре цифры номера кредитной карты.

SELECT REGEXP_SUBSTR(CARD_NUMBER, '\d{4}$') AS LAST_FOUR
FROM PAYMENTS;