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


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

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

Замечание

В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.

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

REGEXP_MATCHES
     (
      string_expression,
      pattern_expression [, flags ]
     )

Требуется уровень совместимости базы данных 170. Чтобы задать уровень совместимости базы данных, просмотрите уровень совместимости ALTER DATABASE (Transact-SQL) .

Замечание

Регулярные выражения доступны в Управляемом экземпляре 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 байт.

флаги

Один или несколько символов, указывающих модификаторы, используемые для поиска совпадений. Тип 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)

Возвраты

Возвращает табличный результат следующим образом:

Имя столбца Тип данных Описание
match_id bigint Последовательность совпадающих слов.
start_position int Начальная позиция индекса.
end_position int Конечное положение индекса.
match_value Тот же тип, что string_expression и varchar Соответствующее выражение.
substring_matches json Документ JSON, описывающий совпадение.

Примеры

Возвращайте табличные результаты из 'Learning #AzureSQL #AzureSQLDB' этого начала с символа # , за которым следует один или несколько буквенно-цифровых символов (A-Z, a-z, 0-9) или символов подчеркивания (_).

SELECT *
FROM REGEXP_MATCHES('Learning #AzureSQL #AzureSQLDB', '#([A-Za-z0-9_]+)');
match_id start_position end_position match_value substring_matches
1        10             18           #AzureSQL   [{"value":"AzureSQL","start":11,"length":8}]
2        20             30           #AzureSQLDB [{"value":"AzureSQLDB","start":21,"length":10}]

Возвращайте строки из ABC этих строк соответствия, которые начинаются с буквы A , за которой следует ровно два символа.

SELECT *
FROM REGEXP_MATCHES('ABC', '^(A)(..)$');
match_id start_position end_position match_value substring_matches
1        1              3            ABC         [{"value":"A","start":1,"length":1},{"value":"BC","start":2,"length":2}]