CHARINDEX (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data WarehouseouiParallel Data Warehouse

Recherche une autre expression dans une expression et retourne sa position de départ, le cas échéant.

Topic link icon Conventions de la syntaxe Transact-SQL

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse  
  
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

expressionToFind
Est un caractère expression qui contient la séquence à rechercher. expressionToFind est limité à 8 000 caractères.

expressionToSearch
Expression de caractères à rechercher.

start_location
Est un entier ou bigint expression au niveau duquel commence la recherche. Si start_location n’est pas spécifiée, est un nombre négatif ou est égale à 0, la recherche commence au début de expressionToSearch.

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

Si le paramètre expressionToFind ou expressionToSearch est de 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. CHARINDEX ne peut pas être utilisé avec texte, ntext, et image des types de données.

Si le paramètre expressionToFind ou expressionToSearch est NULL, CHARINDEX retourne NULL.

Si expressionToFind n’est trouvé dans expressionToSearch, 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.

0 x 0000 (char(0)) est un caractère indéfini dans les classements Windows et ne peut pas être inclus dans CHARINDEX.

Lors de l’utilisation de classements SC, les deux start_location et la valeur de retour comptent les paires substitution comme un seul caractère, pas les deux. Pour plus d’informations, consultez Collation and Unicode Support.

A. Retour de la position de départ d'une 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 AdventureWorks2012.

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            

B. Recherche à partir d'une position spécifique

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 AdventureWorks2012 base de données.

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)  

C. Recherche d'une expression inexistante

L’exemple suivant montre le jeu de résultats lorsque expressionToFind n’est trouvé dans 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.

-----------

0

(1 row(s) affected)

D. Recherche respectant la casse

L’exemple suivant effectue une recherche respectant 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 l'ensemble des résultats.

-----------

0

L’exemple suivant effectue une recherche respectant 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 l'ensemble des résultats.

-----------

13

E. Recherche ne respectant pas la casse

L'exemple suivant effectue une recherche qui ne respecte pas 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_CI_AS);  
GO  

Voici l'ensemble des résultats.

-----------

13

F. Rechercher le début d’une expression de chaîne

L’exemple suivant retourne le premier emplacement de la is de chaîne dans This is a string, à partir de la position 1 (le premier caractère) dans la chaîne.

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

Voici l'ensemble des résultats.

---------

3

G. Recherche d’un emplacement autre que la première position

L’exemple suivant retourne le premier emplacement de la is de chaîne dans This is a string, en commençant à la quatrième position.

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

Voici l'ensemble des résultats.

---------

6

H. Résultats lorsque la chaîne est introuvable.

L’exemple suivant affiche la valeur de retour lorsque la string_pattern est introuvable dans la chaîne recherchée.

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

Voici l'ensemble des résultats.

---------

0

Fonctions de chaîne &#40 ; Transact-SQL &#41 ;
+ &#40 ; Concaténation de chaînes &#41 ; &#40 ; Transact-SQL &#41 ;
Classement et prise en charge Unicode

Ajouts de la communauté

AJOUTER
Afficher: