Partager via


CHARINDEX (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison d’analytique SQL dans Microsoft FabricEntrepôt dans Microsoft FabricBase de données SQL dans Microsoft Fabric

Cette fonction recherche une expression de caractères à l’intérieur d’une deuxième expression de caractères, retournant la position de départ de la première expression si elle est trouvée.

Conventions de la syntaxe Transact-SQL

Syntaxe

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Arguments

expressionToFind

Expression de caractères contenant la séquence à rechercher. expressionToFind a une limite de 8 000 caractères.

expressionToSearch

Expression de caractères à rechercher.

start_location

Expression de type integer ou bigint à laquelle la recherche commence. Si start_location n’est pas spécifié, a une valeur négative ou a une valeur zéro (0), la recherche commence au début d’expressionToSearch.

Types de retour

bigint si expressionToSearch a un type de données nvarchar(max) , varbinary(max) ou varchar(max) ; sinon, int.

Notes

Si l’expressionToFind ou expressionToSearch a un type de données Unicode (nchar ou nvarchar) et que l’autre expression ne le fait pas, la CHARINDEX fonction convertit cette autre expression en type de données Unicode. CHARINDEX ne peut pas être utilisé avec des types de données image, ntext ou texte .

Si l’expression expressionToFind ou expressionToSearch a une NULL valeur, CHARINDEX retourne NULL.

Si CHARINDEX aucune expressionToFind n’est trouvé dans expressionToSearch, CHARINDEX retourne 0.

CHARINDEX effectue des comparaisons basées sur le classement d’entrée. Pour effectuer une comparaison dans un classement spécifié, utilisez COLLATE pour appliquer un classement explicite à l’entrée.

La position de départ retournée est basée sur la valeur 1, et non sur la valeur 0.

0x0000 (char(0)) est un caractère non défini dans les classements Windows et ne peut pas être inclus dans CHARINDEX.

Caractères supplémentaires (paires de substitution)

Lorsque vous utilisez des classements de caractères supplémentaires (SC), start_location et les paires de substitution de nombre de valeurs de retour comme un caractère, et non deux. Pour plus d’informations, consultez Prise en charge du classement et unicode.

Exemples

R. Retourner la position de départ d’une expression

Cet exemple recherche bicycle dans la variable avec une valeur de chaîne @document où la recherche est effectuée.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bicycle', @document);
GO

Voici le jeu de résultats.

-----------
48

B. Rechercher à partir d’une position spécifique

L’exemple suivant utilise le paramètre facultatif start_location pour commencer la recherche de vital à partir du cinquième caractère de variable avec une valeur de chaîne @document où la recherche est effectuée.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('vital', @document, 5);
GO

Voici le jeu de résultats.

-----------
16

C. Rechercher une expression inexistante

Cet exemple montre le jeu de résultats quand CHARINDEX aucune expressionToFind n’est trouvé dans expressionToSearch.

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bike', @document);
GO

Voici le jeu de résultats.

-----------
0

Cet exemple montre une recherche avec respect de la casse de la chaîne TEST dans This is a Test.

USE tempdb;
GO

--perform a case sensitive search
SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CS_AS);

Voici le jeu de résultats.

-----------
0

Cet exemple montre une recherche avec respect de la casse de la chaîne Test dans This is a Test.

USE tempdb;
GO

SELECT CHARINDEX('Test', 'This is a Test' COLLATE Latin1_General_CS_AS);

Voici le jeu de résultats.

-----------
11

Cet exemple montre une recherche sans respect de la casse pour la chaîne TEST dans la chaîne This is a Testrecherchée.

USE tempdb;
GO

SELECT CHARINDEX('TEST', 'This is a Test' COLLATE Latin1_General_CI_AS);
GO

Voici le jeu de résultats.

-----------
11

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

F. Rechercher à partir du début d’une expression de chaîne

Cet exemple retourne le premier emplacement de la chaîne is dans This is a string, en commençant à la position 1 (le premier caractère) de This is a string.

SELECT CHARINDEX('is', 'This is a string');

Voici le jeu de résultats.

---------
3

G. Rechercher à partir d’une position autre que la première position

Cet exemple retourne le premier emplacement de la chaîne is dans This is a string, en commençant à la position 4 (le quatrième caractère).

SELECT CHARINDEX('is', 'This is a string', 4);

Voici le jeu de résultats.

---------
 6

H. Résultats lorsque la chaîne est introuvable

Cet exemple montre la valeur de retour quand CHARINDEX la chaîne ne trouve pas string_pattern dans la chaîne recherchée.

SELECT TOP (1) CHARINDEX('at', 'This is a string')
FROM dbo.DimCustomer;

Voici le jeu de résultats.

---------
0