REGEXP_COUNT (Transact-SQL)

Применимо к:Конечная точка аналитики SQLServer 2025 (17.x) Базы данныхSQL Azure в Microsoft Fabric и хранилище вбазе данных SQL Microsoft Fabric в Microsoft Fabric

REGEXP_COUNT Скалярная функция регулярного выражения считает, сколько раз шаблон регулярного выражения совпадает в строке.

REGEXP_COUNT
(
    string_expression,
    pattern_expression [ , start [ , flags ] ]
)

Arguments

string_expression

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

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

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

Note

Функции поддерживают REGEXP_* типы LOB (varchar(max) и nvarchar(max)) до 2 МБ для параметра string_expression .

pattern_expression

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

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

start

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

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

Если начальное выражение меньше 1, запрос возвращает ошибку.

flags

Один или несколько символов, указывающих модификаторы, используемые для поиска совпадений. Тип 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.
Поддерживаемые значения флагов
Flag Description
i Без учета регистра (по умолчанию false)
m Многострочный режим: ^ и $ сопоставление начальной и конечной строки в дополнение к начальной и конечной строке (по умолчанию false)
s Разрешить . совпадение \n (по умолчанию false)
c Учет регистра (по умолчанию true)

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

int

Поддержка платформы

  • В Управляемый экземпляр SQL Azure году функции регулярных выражений T-SQL доступны только с политикой обновленияSQL Server 2025 или Always-up-to-date.
  • Функции регулярного выражения T-SQL доступны в База данных SQL Azure, SQL базе данных в Fabric и, начиная с SQL Server 2025.
  • Функции регулярного выражения T-SQL недоступны в версиях SQL Server 2022 и более ранних.
  • Скалярные функции регулярных выражений T-SQL доступны как функция предварительного просмотра в Fabric Data Warehouse. Для получения дополнительной информации см. функции регулярных выражений в Fabric Data Warehouse. Таблицные функции T-SQL с регулярными выражениями недоступны в Fabric Data Warehouse.

Examples

Подсчитывать, сколько раз буква a отображается в каждом имени продукта.

SELECT PRODUCT_NAME,
       REGEXP_COUNT(PRODUCT_NAME, 'a') AS A_COUNT
FROM PRODUCTS;

Подсчитывайте, сколько продуктов имеет имя, которое заканчивается ing.

SELECT COUNT(*)
FROM PRODUCTS
WHERE REGEXP_COUNT(PRODUCT_NAME, 'ing$') > 0;

Подсчитывать, сколько продуктов имеет имя, содержащее три последовательных консонантов, игнорируя регистр.

SELECT COUNT(*)
FROM PRODUCTS
WHERE REGEXP_COUNT(PRODUCT_NAME, '[^aeiou]{3}', 1, 'i') > 0;