REGEXP_REPLACE (Transact-SQL)

S’applique à : Point de terminaison d’analyse SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL dans Microsoft Fabric et Warehouse dans labase de données Microsoft Fabric SQL dans Microsoft Fabric

La fonction d’expression REGEXP_REPLACE régulière scalaire renvoie une chaîne source modifiée remplacée par une chaîne de remplacement, où la présence du motif d’expression régulière est trouvée. Si aucune correspondance n’est trouvée, la fonction retourne la chaîne d’origine.

REGEXP_REPLACE
(
    string_expression,
    pattern_expression [ , string_replacement [ , start [ , occurrence [ , flags ] ] ] ]
)

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_* fonctions prennent en charge les types de LOB (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.

string_replacement

Expression de chaîne qui spécifie la chaîne de remplacement pour les sous-chaînes correspondantes et remplace les sous-chaînes mises en correspondance par le modèle. Ils string_replacement peuvent être des types de données char, varchar, nchar, nvarchar, varchar(max) ou nvarchar(max) (les types LOB sont pris en charge jusqu’à 2 Mo). Si une chaîne vide ('') est spécifiée, la fonction supprime toutes les sous-chaînes correspondantes et retourne la chaîne résultante. La chaîne de remplacement par défaut est la chaîne vide ('').

La string_replacement peut contenir \n, où n est de 1 à 9, pour indiquer que la sous-chaîne source correspondant au n’ième groupe entre parenthèses (sous-expression) du modèle doit être insérée, et qu’elle peut contenir & pour indiquer que la sous-chaîne correspondant à l’ensemble du modèle doit être insérée. Écrivez \ si vous devez placer une barre oblique inverse littérale dans le texte de remplacement.

Par exemple

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3')

Returns:

(123) 456-7890

Si l’élément fourni \nstring_replacement est supérieur au nombre de groupes dans le pattern_expression, la fonction ignore la valeur.

Par exemple:

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) (\4)-xxxx')

Returns:

(123) ()-xxxx

start

Spécifiez la position de départ de la recherche dans la chaîne de recherche. Optional. Le type est int ou bigint.

La numérotation est basée sur 1, ce qui signifie que le premier caractère de l’expression est 1 et que la valeur doit être >= 1. Si l’expression de début est inférieure à 1, retourne une erreur. Si l’expression de début est supérieure à la longueur de string_expression, la fonction retourne string_expression. La valeur par défaut est 1.

occurrence

Une expression (entier positif) qui spécifie quelle occurrence de l’expression du motif dans la chaîne source doit être recherchée ou remplacée. La valeur par défaut est 0, ce qui signifie que toutes les occurrences de la pattern_expression sont remplacées. Pour un entier npositif , il recherche string_expression la nénième occurrence, poursuivant la recherche depuis le caractère immédiatement après chaque correspondance précédente.

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)

Valeur retournée

Expression.

Support de la plateforme

  • En Azure SQL Managed Instance, les fonctions d’expression régulière T-SQL sont disponibles uniquement avec la politique de mise à jourSQL Server 2025 ou Always-up-to-date.
  • Les fonctions d’expression régulière T-SQL sont disponibles dans Azure SQL Database, SQL Database dans Fabric, et à partir de SQL Server 2025.
  • Les fonctions d'expression régulière T-SQL ne sont pas disponibles dans SQL Server 2022 ni dans les versions antérieures.
  • Les fonctions scalaires d’expressions régulières T-SQL sont disponibles en tant que fonction de prévisualisation dans Fabric Data Warehouse. Pour plus d’informations, voir Fonctions d’expressions régulières dans Fabric Data Warehouse. Les fonctions à valeurs de table d’expressions régulières T-SQL ne sont pas disponibles dans Fabric Data Warehouse.

Examples

Remplacez toutes les occurrences de a ou de e par des X dans les noms de produits.

SELECT REGEXP_REPLACE(PRODUCT_NAME, '[ae]', 'X', 1, 0, 'i')
FROM PRODUCTS;

Remplacez la première occurrence de cat ou de dog par pet dans les descriptions du produit

SELECT REGEXP_REPLACE(PRODUCT_DESCRIPTION, 'cat|dog', 'pet', 1, 1, 'i')
FROM PRODUCTS;

Remplacez les quatre derniers chiffres des numéros de téléphone par des astérisques

SELECT REGEXP_REPLACE(PHONE_NUMBER, '\d{4}$', '****')
FROM CUSTOMERS;