Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : Base de données SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL dans Microsoft Fabric
Indique si le modèle d’expression régulière correspond dans une chaîne.
REGEXP_LIKE
(
string_expression,
pattern_expression [ , flags ]
)
REGEXP_LIKE nécessite le niveau de compatibilité de la base de données 170 et versions ultérieures. Si le niveau de compatibilité de la base de données est inférieur à 170, REGEXP_LIKE il n’est pas disponible. D’autres fonctions scalaires d’expression régulière sont disponibles à tous les niveaux de compatibilité.
Vous pouvez vérifier le niveau de compatibilité dans la vue ou dans les sys.databases propriétés de base de données. Vous pouvez modifier le niveau de compatibilité d’une base de données avec la commande suivante :
ALTER DATABASE [DatabaseName]
SET COMPATIBILITY_LEVEL = 170;
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) |
Valeur retournée
Valeur booléenne.
true ou false.
Remarks
Estimation de la cardinalité
Pour améliorer la précision de l’estimation de la cardinalité de la REGEXP_LIKE fonction, utilisez les ASSUME_FIXED_MIN_SELECTIVITY_FOR_REGEXP indices et ASSUME_FIXED_MAX_SELECTIVITY_FOR_REGEXP requête pour ajuster les valeurs de sélectivité par défaut. Pour plus d’informations, consultez indicateurs de requête.
Ces indices de requête s’intègrent également avec le retour d’estimation de cardinalité (CE). Le modèle de rétroaction CE identifie automatiquement les requêtes utilisant la REGEXP_LIKE fonction où il y a une différence significative entre le nombre estimé et le nombre réel de lignes. Il applique ensuite l’indicateur de sélection approprié au niveau de la requête pour améliorer la qualité du plan sans nécessiter d’entrée manuelle.
Pour désactiver le comportement de commentaires automatiques, activez l’indicateur de trace 16268.
Examples
Sélectionnez tous les enregistrements dans le Employees tableau où le prénom commence et A se termine par Y:
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$');
Sélectionnez tous les enregistrements dans la Employees table où le prénom commence et A se termine par Y, en utilisant le mode insensible à la majuscule :
SELECT *
FROM Employees
WHERE REGEXP_LIKE (FIRST_NAME, '^A.*Y$', 'i');
Sélectionnez tous les enregistrements dans la Orders table où la date de commande est en février 2020 :
SELECT *
FROM Orders
WHERE REGEXP_LIKE (ORDER_DATE, '2020-02-\d\d');
Sélectionnez tous les enregistrements de la Products table où le nom du produit contient au moins trois voyelles consécutives :
SELECT *
FROM Products
WHERE REGEXP_LIKE (PRODUCT_NAME, '[AEIOU]{3,}');
Créez un tableau des employés avec CHECK des contraintes pour les Email colonnes et Phone_Number :
DROP TABLE IF EXISTS Employees;
CREATE TABLE Employees
(
ID INT IDENTITY (101, 1),
[Name] VARCHAR (150),
Email VARCHAR (320)
CHECK (REGEXP_LIKE (Email, '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$')),
Phone_Number NVARCHAR (20)
CHECK (REGEXP_LIKE (Phone_Number, '^(\d{3})-(\d{3})-(\d{4})$'))
);