Compartilhar via


REGEXP_MATCHES (Transact-SQL)

Aplica-se a: SQL Server 2025 (17.x) Banco de Dados SQL do AzureBanco de DadosSQL do Azure Banco de Dados SQL banco de dados SQL do Banco de Dados SQL do Azurebanco de dados SQL no Microsoft Fabric

Retorna uma tabela de substrings capturadas que correspondem a um padrão de expressão regular a uma string. Se nenhuma correspondência for encontrada, a função não retornará nenhuma linha.

REGEXP_MATCHES
(
    string_expression,
    pattern_expression [ , flags ]
)

Requer o nível de compatibilidade do banco de dados 170. Para definir o nível de compatibilidade do banco de dados, examine o nível de compatibilidade ALTER DATABASE (Transact-SQL).

Note

Expressões regulares estão disponíveis na Instância Gerenciada de SQL do Azure com a política de atualização do SQL 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 e REGEXP_COUNTREGEXP_INSTR funções dão suporte a tipos 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. Normalmente, um literal de texto.

Tipos de dados: char, nchar, varcharou nvarchar. pattern_expression dá suporte a um comprimento máximo de caractere de 8.000 bytes.

flags

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

Por exemplo, ims. O padrão é c. Se uma cadeia de caracteres vazia (' ') for fornecida, ela será tratada como o valor padrão ('c'). Forneça c ou qualquer outra expressão de caractere. 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á correspondência que diferencia maiúsculas de minúsculas.

Se o valor contiver um caractere diferente daqueles listados em valores de sinalizador com suporte, 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 com suporte
Flag Description
i Não diferencia maiúsculas de minúsculas (padrão false)
m Modo de várias linhas: ^ e $ corresponder à linha de início/término, além do texto de início/término (padrão false)
s Permitir . correspondência \n (padrão false)
c Diferencia maiúsculas de minúsculas (padrão true)

Returns

Retorna um resultado tabular da seguinte maneira:

Nome da coluna Tipo de dados Description
match_id bigint A sequência de palavras correspondentes.
start_position int Posição inicial do índice.
end_position int Terminando a posição do índice.
match_value Mesmo tipo que string_expression ou varchar Expressão correspondente.
substring_matches json Documento JSON que descreve a correspondência.

Examples

Retornar resultados tabulares desse 'Learning #AzureSQL #AzureSQLDB' início com um # caractere seguido por um ou mais caracteres alfanuméricos (A-Z, a-z, 0-9) ou sublinhados (_).

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}]

Retornar cadeias de caracteres dessa ABC correspondência de cadeias de caracteres que começam com a letra A seguida por exatamente dois caracteres.

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}]