CHARINDEX (Transact-SQL)

Recherche expression2 pour expression1 et retourne sa position de départ si la recherche est fructueuse. La recherche démarre à start_location.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

Arguments

  • expression1
    Expression de caractères qui contient la séquence à rechercher. expression1 est limitée à 8 000 caractères.

  • expression2
    Expression de caractères à rechercher.

  • start_location
    Entier ou expression bigint à laquelle la recherche démarre. Si la valeur de start_location n'est pas spécifiée, est un nombre négatif ou est égale à zéro, la recherche commence au début de expression2.

Types de retour

bigint si expression2 est des types de données varchar(max), nvarchar(max) ou varbinary(max) ; sinon, int.

Notes

Si un des arguments expression1 ou expression2 est d'un type de données Unicode (nvarchar ou nchar) et que l'autre ne l'est pas, ce dernier est systématiquement converti dans un type de données Unicode. La fonction CHARINDEX ne peut pas être utilisée avec le type de données image.

Lorsque l'un des arguments expression1 ou expression2 a la valeur NULL, la fonction CHARINDEX retourne la valeur NULL si la base de données a un niveau de compatibilité supérieur ou égal à 70. Si ce niveau est inférieur ou égal à 65, la fonction CHARINDEX ne retourne la valeur NULL que si les deux arguments expression1 et expression2 prennent la valeur NULL.

Si l'argument expression1 est introuvable dans l'argument expression2, CHARINDEX retourne 0.

CHARINDEX effectue des comparaisons basées sur le classement de l'entrée. Pour exécuter une comparaison selon un classement spécifié, vous pouvez utiliser COLLATE pour appliquer à l'entrée un classement explicite.

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.

Exemples

L'exemple suivant retourne la position initiale de la séquence de caractères bicycle dans la colonne DocumentSummary de la table Document.

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.

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

L'exemple de code suivant utilise le paramètre facultatif start_location pour commencer la recherche de vital à compter du cinquième caractère de la colonne DocumentSummary.

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.

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

(1 row(s) affected)

L'exemple suivant illustre le jeu de résultats obtenu lorsque l'argument expression1 est introuvable dans l'argument expression2.

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.

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

(1 row(s) affected)

L'exemple suivant effectue une recherche qui respecte la casse pour la chaîne 'TEST' dans 'Das jst ein Test'.

USE tempdb;
GO
--perform a case sensitive search
SELECT CHARINDEX ( 'TEST',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

Voici l'ensemble des résultats.

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

L'exemple suivant effectue une recherche qui respecte la casse pour la chaîne 'Test' dans 'Das jst ein Test'.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS)

Voici l'ensemble des résultats.

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

L'exemple suivant effectue une recherche qui ne respecte pas la casse pour la chaîne 'TEST' dans 'Das jst ein Test'.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CI_AS)
GO

Voici l'ensemble des résultats.

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