Partager via


REGEXP_MATCHES (Transact-SQL)

S’applique à : Base de données SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL dans Microsoft Fabric

Retourne une table des sous-chaînes capturées qui correspondent à un motif d’expression régulière à une chaîne. Si aucune correspondance n’est trouvée, la fonction ne retourne aucune ligne.

REGEXP_MATCHES
(
    string_expression,
    pattern_expression [ , flags ]
)

Nécessite le niveau de compatibilité de la base de données 170. Pour définir le niveau de compatibilité de la base de données, passez en revue le niveau de compatibilité ALTER DATABASE (Transact-SQL).

Note

Les expressions régulières sont disponibles dans Azure SQL Managed Instance avec la stratégie de mise à joursql Server 2025 ou Always-up-to-date.

Arguments

string_expression

Expression d’une chaîne de caractères.

Il peut s’agir d’une constante, d’une variable ou d’une colonne de chaîne de caractères.

Types de données : char, nchar, varcharou nvarchar.

Note

Les REGEXP_LIKEfonctions et REGEXP_COUNT les REGEXP_INSTRtypes métier prennent en charge les types métier (varchar(max) et nvarchar(max)) jusqu’à 2 Mo pour le paramètre string_expression.

pattern_expression

Modèle d’expression régulière à mettre en correspondance. Généralement un littéral de texte.

Types de données : char, nchar, varcharou nvarchar. pattern_expression prend en charge une longueur maximale de caractères de 8 000 octets.

flags

Un ou plusieurs caractères qui spécifient les modificateurs utilisés pour rechercher des correspondances. Le type est varchar ou char, avec un maximum de 30 caractères.

Par exemple : ims. La valeur par défaut est c. Si une chaîne vide (' ') est fournie, elle sera traitée comme la valeur par défaut ('c'). Fournissez c ou toute autre expression de caractère. Si l’indicateur contient plusieurs caractères contradictoires, SQL Server utilise le dernier caractère.

Par exemple, si vous spécifiez ic l’expression régulière retourne la correspondance respectant la casse.

Si la valeur contient un caractère autre que ceux répertoriés dans valeurs d’indicateur prises en charge, la requête retourne une erreur comme dans l’exemple suivant :

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Valeurs d’indicateur prises en charge
Flag Description
i Respect de la casse (valeur par défaut false)
m Mode multiligne : ^ et $ mettre en correspondance la ligne de début/fin en plus du texte de début/fin (valeur par défaut false)
s Laisser . correspondre \n (valeur par défaut false)
c Respect de la casse (valeur par défaut true)

Returns

Retourne un résultat tabulaire comme suit :

Nom de la colonne Type de données Description
match_id bigint Séquence de mots correspondants.
start_position int Position d’index de départ.
end_position int Fin de la position d’index.
match_value Même type que string_expression ou varchar Expression correspondante.
substring_matches json Document JSON décrivant la correspondance.

Examples

Retourne les résultats tabulaires de 'Learning #AzureSQL #AzureSQLDB' ce début avec un # caractère suivi d’un ou plusieurs caractères alphanumériques (A-Z, a-z, 0-9) ou de traits de soulignement (_).

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

Retourne des chaînes de ABC cette correspondance qui commencent par la lettre A suivie de deux caractères exactement.

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