CHARINDEX (Transact-SQL)

Retourne la position initiale de l'expression spécifiée dans une chaîne de caractères.

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

Syntaxe

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

Arguments

  • expression1
    expression qui contient la séquence de caractères à rechercher. Les données de l'argument expression1 sont de type chaîne de caractères.
  • expression2
    Expression, en général la colonne dans laquelle est recherchée la chaîne spécifiée. Les données de l'argument expression2sont de type chaîne de caractères.
  • start_location
    Position dans la chaîne à partir de laquelle rechercher expression1 dans expression2. Si la valeur de start_location n'est pas spécifiée, est un nombre négatif ou est égal à zéro, la recherche commence au début de la chaîne expression2. start_location peut être de type bigint.

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. CHARINDEX ne peut pas être utilisé avec les types de données text, ntext et 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 réaliser une comparaison dans un classement spécifique, vous pouvez utiliser COLLATE afin d'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.

Types de retour

Type bigint si expression2 est du type de données varchar(max), nvarchar(max) ou varbinary(max), sinon type int.

Exemples

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

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
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 bicycle à compter du cinquième caractère de la colonne DocumentSummary.

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary, 5)
FROM Production.Document
WHERE DocumentID = 3;
GO

Voici l'ensemble des résultats.

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

(1 row(s) affected)

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

USE AdventureWorks;
GO
SELECT CHARINDEX('bike', DocumentSummary)
FROM Production.Document
WHERE DocumentID =6;
GO

Voici l'ensemble des résultats.

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

(1 row(s) affected)

L'exemple suivant utilise la fonction COLLATE.

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

Voir aussi

Référence

+ (Concaténation de chaîne) (Transact-SQL)
Fonctions de chaîne (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005