Partilhar via


REGEXP_COUNT (Transact-SQL)

Aplica-se a: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

Conta o número de vezes que um padrão de expressão regular é correspondido em uma cadeia de caracteres.

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

Note

As expressões regulares estão disponíveis na Instância Gerenciada SQL do Azure com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.

Arguments

string_expression

Uma expressão de uma cadeia de caracteres.

Pode ser uma constante, variável ou coluna de cadeia de caracteres.

Tipos de dados: char, nchar, varcharou nvarchar.

Note

As REGEXP_LIKEfunções , REGEXP_COUNTe REGEXP_INSTR suportam tipos de LOB (varchar(max) e nvarchar(max)) até 2 MB para o parâmetro string_expression .

pattern_expression

Padrão de expressão regular a ser correspondido. Geralmente um texto literal.

Tipos de dados: char, nchar, varcharou nvarchar. pattern_expression suporta um comprimento máximo de caracteres de 8.000 bytes.

start

Especifique a posição inicial para a pesquisa dentro da cadeia de caracteres de pesquisa. Optional. Tipo é int ou bigint.

A numeração é baseada em 1, o que significa que o primeiro caractere da expressão é 1 e o valor deve ser >= 1. Se a expressão inicial for menor que 1, a pattern_expression retornada começará no primeiro caractere especificado em string_expression. Se a expressão inicial for maior que o comprimento de string_expression, a função retornará 0. O padrão é 1.

Se a expressão inicial for menor que 1, a consulta retornará um erro.

flags

Um ou mais caracteres que especificam os modificadores usados para pesquisar correspondências. Type é varchar ou char, com um máximo de 30 caracteres.

Por exemplo, ims. O padrão é c. Se uma (' ') de cadeia de caracteres vazia for fornecida, ela será tratada como o valor padrão ('c'). Forneça c ou quaisquer outras expressões de caracteres. Se o sinalizador contiver vários caracteres contraditórios, o SQL Server usará o último caractere.

Por exemplo, se você especificar ic o regex retornará a correspondência que diferencia maiúsculas de minúsculas.

Se o valor contiver um caractere diferente daqueles listados em valores de sinalizador suportados, a consulta retornará um erro como o exemplo a seguir:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Valores de sinalizador suportados
Flag Description
i Não diferencia maiúsculas de minúsculas (padrão false)
m Modo multi-linha: e ^ corresponder a linha de início/fim, $ além do texto de início/fim (padrãofalse)
s Deixar . corresponder \n (padrão false)
c Diferencia maiúsculas de minúsculas (padrão true)

Valor de retorno

int

Examples

Conte quantas vezes a letra a aparece no nome de cada produto.

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

Conte quantos produtos têm um nome que termina com ing.

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

Conte quantos produtos têm um nome que contém três consoantes consecutivas, ignorando maiúsculas e minúsculas.

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