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

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data Warehouse ouiParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Recherche une autre expression dans une expression et retourne sa position de départ, le cas échéant.Searches an expression for another expression and returns its starting position if found.

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

SyntaxeSyntax

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

ArgumentsArguments

expressionToFindexpressionToFind
Est un caractère expression qui contient la séquence à rechercher.Is a character expression that contains the sequence to be found. expressionToFind est limité à 8 000 caractères.expressionToFind is limited to 8000 characters.

expressionToSearchexpressionToSearch
Expression de caractères à rechercher.Is a character expression to be searched.

start_locationstart_location
Est un entier ou bigint expression à laquelle la recherche commence.Is an integer or bigint expression at which the search starts. Si start_location n’est pas spécifié, est un nombre négatif ou est égal à 0, la recherche commence au début de expressionToSearch.If start_location is not specified, is a negative number, or is 0, the search starts at the beginning of expressionToSearch.

Types de retourReturn types

bigint si expressionToSearch est de le varchar (max), nvarchar (max), ou varbinary (max) des types de données ; sinon, int.bigint if expressionToSearch is of the varchar(max), nvarchar(max), or varbinary(max) data types; otherwise, int.

NotesRemarks

Si le paramètre expressionToFind ou expressionToSearch est d’un type de données Unicode (nvarchar ou nchar) et l’autre ne l’est pas, l’autre est converti en un type de données Unicode.If either expressionToFind or expressionToSearch is of a Unicode data type (nvarchar or nchar) and the other is not, the other is converted to a Unicode data type. Fonction CHARINDEX ne peut pas être utilisée avec texte, ntext, et image des types de données.CHARINDEX cannot be used with text, ntext, and image data types.

Si le paramètre expressionToFind ou expressionToSearch est NULL, CHARINDEX retourne NULL.If either expressionToFind or expressionToSearch is NULL, CHARINDEX returns NULL.

Si expressionToFind n’est trouvé dans expressionToSearch, CHARINDEX retourne 0.If expressionToFind is not found within expressionToSearch, CHARINDEX returns 0.

CHARINDEX effectue des comparaisons basées sur le classement de l'entrée.CHARINDEX performs comparisons based on the collation of the input. Pour exécuter une comparaison selon un classement spécifié, vous pouvez utiliser COLLATE pour appliquer à l'entrée un classement explicite.To perform a comparison in a specified collation, you can 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.

0 x 0000 (char(0)) est un caractère indé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, les deux start_location et la valeur de retour comptent les paires substitution comme un caractère, pas les 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

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

L'exemple suivant retourne la position initiale de la séquence de caractères bicycle dans la colonne DocumentSummary de la table Document dans la base de données AdventureWorks2012AdventureWorks2012.The following example returns the position at which the sequence of characters bicycle starts in the DocumentSummary column of the Document table in the AdventureWorks2012AdventureWorks2012 database.

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

Voici l'ensemble des résultats.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 paramètre pour commencer la recherche de vital au cinquième caractère de la DocumentSummary colonne dans la AdventureWorks2012AdventureWorks2012 base de données.The following example uses the optional start_location parameter to start looking for vital at the fifth character of the DocumentSummary column in the AdventureWorks2012AdventureWorks2012 database.

DECLARE @document varchar(64);  

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

Voici l'ensemble des résultats.Here is the result set.

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

(1 row(s) affected)  

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

L’exemple suivant montre le jeu de résultats lorsque expressionToFind n’est trouvé dans expressionToSearch.The following example shows the result set when expressionToFind is not found within expressionToSearch.

DECLARE @document varchar(64);  

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

Voici l'ensemble des résultats.Here is the result set.

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

(1 row(s) affected)

L’exemple suivant effectue une recherche qui respecte la casse de la chaîne 'TEST' dans 'This is a Test``'.The following example performs a case-sensitive search for the string 'TEST' in '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 l'ensemble des résultats.Here is the result set.

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

L’exemple suivant effectue une recherche qui respecte la casse de la chaîne 'Test' dans 'This is a Test'.The following example performs 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 l'ensemble des résultats.Here is the result set.

-----------
13

L'exemple suivant effectue une recherche qui ne respecte pas la casse de la chaîne 'TEST' dans 'This is a Test'.The following example performs 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 l'ensemble des résultats.Here is the result set.

-----------
13

Exemples : Azure SQL Data WarehouseAzure SQL Data Warehouse et Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL Data WarehouseAzure 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

L’exemple suivant retourne le premier emplacement de la is de chaîne dans This is a string, en commençant à partir de la position 1 (le premier caractère) dans la chaîne.The following example returns the first location of the is string in This is a string, starting from position 1 (the first character) in the string.

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

Voici l'ensemble des résultats.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

L’exemple suivant retourne le premier emplacement de la is de chaîne dans This is a string, en commençant par la quatrième position.The following example returns the first location of the is string in This is a string, starting with the fourth position.

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

Voici l'ensemble des résultats.Here is the result set.

---------
 6

H.H. Résultats de la chaîne est introuvable.Results when the string is not found

L’exemple suivant montre la valeur de retour lorsque la string_pattern est introuvable dans la chaîne recherchée.The following example shows the return value when the string_pattern is not found in the searched string.

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

Voici l'ensemble des résultats.Here is the result set.

---------
0

Voir aussiSee also

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