Partager via


REGEXP_INSTR (Transact-SQL)

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

Retourne la position de début ou de fin de la sous-chaîne correspondante, en fonction de la valeur de l’argument return_option.

REGEXP_INSTR
(
    string_expression,
    pattern_expression [ , start [ , occurrence [ , return_option [ , flags [ , group ] ] ] ] ]
)

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.

start

Spécifie 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 0. La valeur par défaut est 1.

occurrence

Expression (entier positif) qui spécifie l’occurrence de l’expression de modèle dans la chaîne source à rechercher ou remplacer. La valeur par défaut est 1. Recherche au premier caractère du string_expression. Pour un entier npositif, il recherche l’occurrence nth commençant par le premier caractère suivant la première occurrence du pattern_expression, etc.

return_option

Spécifie s’il faut retourner la position de début ou de fin de la sous-chaîne correspondante. Utilisez 0 pour le début et 1 pour la fin. La valeur par défaut est 0. La requête retourne une erreur pour toute autre valeur.

flag

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)

group

Spécifie le groupe de capture (subexpression) d’un pattern_expression détermine la position dans string_expression à retourner. Le groupe est un fragment de modèle placé entre parenthèses et peut être imbriqué. Les groupes sont numérotés dans l’ordre dans lequel leurs parenthèses gauches apparaissent dans le modèle. La valeur est un entier et doit >= 0 être et ne doit pas être supérieure au nombre de groupes dans le pattern_expression. La valeur par défaut est 0, ce qui indique que la position est basée sur la chaîne qui correspond à l’ensemble de la pattern_expression.

Si la valeur est supérieure au nombre de groupes dans pattern_expression, la fonction retourne 0.

Valeur retournée

Integer.

Examples

Recherchez la position du premier sous-chaîne qui contient uniquement des chiffres dans la colonne PRODUCT_DESCRIPTION.

SELECT REGEXP_INSTR(PRODUCT_DESCRIPTION, '\d+')
FROM PRODUCTS;

Recherchez la position de la troisième occurrence de la lettre a (sans respect de la casse) dans la colonne PRODUCT_NAME.

SELECT REGEXP_INSTR(PRODUCT_NAME, 'a', 1, 3, 0, 'i')
FROM PRODUCTS;

Recherchez la position de la fin de la première sous-chaîne commençant par t et se termine par e (respectant la casse) dans la colonne PRODUCT_DESCRIPTION.

SELECT REGEXP_INSTR(PRODUCT_DESCRIPTION, 't.*?e', 1, 1, 1)
FROM PRODUCTS;