CHARINDEX (Transact-SQL)CHARINDEX (Transact-SQL)

S’APPLIQUE À : OuiSQL Server OuiAzure SQL Database OuiAzure Synapse Analytics (SQL DW) OuiParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database YesAzure Synapse Analytics (SQL DW) YesParallel Data Warehouse

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.This function searches for one character expression inside a second character expression, returning the starting position of the first expression if found.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

ArgumentsArguments

expressionToFindexpressionToFind
Expression de caractères contenant la séquence à rechercher.A character expression containing the sequence to find. expressionToFind a une limite de 8 000 caractères.expressionToFind has an 8000 character limit.

expressionToSearchexpressionToSearch
Expression de caractères à rechercher.A character expression to search.

start_locationstart_location
Expression de type integer ou bigint à laquelle la recherche commence.An integer or bigint expression at which the search starts. Si start_location n’est pas spécifiée, a une valeur négative ou est égale à 0, la recherche commence au début de expressionToSearch.If start_location is not specified, has a negative value, or has a zero (0) value, the search starts at the beginning of expressionToSearch.

Types de retourReturn types

bigint si expressionToSearch a un type de données nvarchar(max) , varbinary(max) ou varchar(max) ; sinon, int.bigint if expressionToSearch has an nvarchar(max), varbinary(max), or varchar(max) data type; int otherwise.

NotesRemarks

Si l’expression expressionToFind ou expressionToSearch a un type de données Unicode (nchar ou nvarchar) et que ce n’est pas le cas de l’autre expression, la fonction CHARINDEX convertit cette autre expression en un type de données Unicode.If either the expressionToFind or expressionToSearch expression has a Unicode data type (nchar or nvarchar), and the other expression does not, the CHARINDEX function converts that other expression to a Unicode data type. Vous ne pouvez pas utiliser CHARINDEX avec les types de données text, ntext ou image.CHARINDEX cannot be used with image, ntext, or text data types.

Si l’expression expressionToFind ou expressionToSearch a une valeur NULL, CHARINDEX retourne NULL.If either the expressionToFind or expressionToSearch expression has a NULL value, CHARINDEX returns NULL.

Si CHARINDEX ne trouve pas expressionToFind dans expressionToSearch, CHARINDEX retourne 0.If CHARINDEX does not find expressionToFind within expressionToSearch, CHARINDEX returns 0.

CHARINDEX effectue des comparaisons basées sur le classement de l’entrée.CHARINDEX performs comparisons based on the input collation. Pour effectuer une comparaison dans un classement spécifié, utilisez COLLATE pour appliquer un classement explicite à l’entrée.To perform a comparison in a specified collation, use COLLATE to apply an explicit collation to the input.

La position de départ retournée est basée sur la valeur 1, et non sur la valeur 0.The starting position returned is 1-based, not 0-based.

0x0000 (char(0) ) est un caractère non défini dans les classements Windows et ne peut pas être inclus dans CHARINDEX.0x0000 (char(0)) is an undefined character in Windows collations and cannot be included in CHARINDEX.

Caractères supplémentaires (paires de substitution)Supplementary Characters (Surrogate Pairs)

Lors de l’utilisation de classements SC, start_location et la valeur renvoyée comptent les paires de substitution comme s’il s’agissait d’un seul caractère et non de deux.When using SC collations, both start_location and the return value count surrogate pairs as one character, not two. Pour plus d’informations, consultez Prise en charge d’Unicode et du classement.For more information, see Collation and Unicode Support.

ExemplesExamples

R.A. Retour de la position de départ d'une expressionReturning the starting position of an expression

Cet exemple recherche bicycle dans la variable avec une valeur de chaîne @document où la recherche est effectuée.This example searches for bicycle in the searched string value variable @document.

DECLARE @document varchar(64);  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bicycle', @document);  
GO  

Voici le jeu de résultats obtenu.Here is the result set.

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

B.B. Recherche à partir d'une position spécifiqueSearching from a specific position

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.This example uses the optional start_location parameter to start the search for vital at the fifth character of the searched string value variable @document.

DECLARE @document varchar(64);  
  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('vital', @document, 5);  
GO  

Voici le jeu de résultats obtenu.Here is the result set.

-----------   
16            
  
(1 row(s) affected)  

C.C. Recherche d'une expression inexistanteSearching for a nonexistent expression

Cet exemple montre le jeu de résultats quand CHARINDEX ne trouve pas expressionToFind dans expressionToSearch.This example shows the result set when CHARINDEX does not find expressionToFind within expressionToSearch.

DECLARE @document varchar(64);  
  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bike', @document);  
GO  

Voici le jeu de résultats obtenu.Here is the result set.

-----------
0
  
(1 row(s) affected)

Cet exemple montre une recherche avec respect de la casse de la chaîne 'TEST' dans 'This is a Test``'.This example shows a case-sensitive search for the string 'TEST' in searched string '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 obtenu.Here is the result set.

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

Cet exemple montre une recherche avec respect de la casse de la chaîne 'Test' dans 'This is a Test'.This example shows a case-sensitive search for the string 'Test' in '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 obtenu.Here is the result set.

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

Cet exemple montre une recherche sans respect de la casse de la chaîne 'TEST' dans 'This is a Test'.This example shows a case-insensitive search for the string 'TEST' in 'This is a Test'.

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

Voici le jeu de résultats obtenu.Here is the result set.

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

Exemples : Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) et Parallel Data WarehouseParallel Data WarehouseExamples: Azure Synapse Analytics (SQL Data Warehouse)Azure Synapse Analytics (SQL Data Warehouse) and Parallel Data WarehouseParallel Data Warehouse

F.F. Recherche à partir du début d’une expression de chaîneSearching from the start of a string expression

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.This example returns the first location of the string is in string This is a string, starting from position 1 (the first character) of This is a string.

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

Voici le jeu de résultats obtenu.Here is the result set.

---------
3

G.G. Recherche à partir d’une position autre que la première positionSearching from a position other than the first 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).This example returns the first location of the string is in string This is a string, starting the search from position 4 (the fourth character).

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

Voici le jeu de résultats obtenu.Here is the result set.

---------
 6

H.H. Résultats quand la chaîne est introuvableResults when the string is not found

Cet exemple montre la valeur de retour quand CHARINDEX ne trouve pas la chaîne string_pattern dans la chaîne où a lieu la recherche.This example shows the return value when CHARINDEX does not find string string_pattern in the searched string.

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

Voici le jeu de résultats obtenu.Here is the result set.

---------
0

Voir aussiSee also

LEN (Transact-SQL)LEN (Transact-SQL)
PATINDEX (Transact-SQL)PATINDEX (Transact-SQL)
Fonctions de chaîne (Transact-SQL)String Functions (Transact-SQL)
+ (Concaténation de chaînes) (Transact-SQL)+ (String Concatenation) (Transact-SQL)
Prise en charge d'Unicode et du classementCollation and Unicode Support