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 à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Point de terminaison d’analytique SQL dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base 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
D. Effectuer une recherche sensible à la casse
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
E. Effectuer une recherche non sensible à la casse
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