Published on

May 1, 2019

Comprendre la fonction SQL CHARINDEX dans SQL Server

La fonction SQL CHARINDEX est un outil puissant qui nous permet de trouver la position d’une sous-chaîne ou d’une expression dans une chaîne donnée. Elle est couramment utilisée dans SQL Server pour rechercher des caractères ou des sous-chaînes spécifiques dans des données textuelles.

La syntaxe de la fonction SQL CHARINDEX est la suivante:

CHARINDEX(expression_a_trouver, expression_a_chercher [, position_de_depart])

La fonction prend trois paramètres:

  • expression_a_trouver: Ce paramètre spécifie le caractère ou la chaîne que nous voulons rechercher dans une autre chaîne.
  • expression_a_chercher: Ce paramètre spécifie la chaîne dans laquelle nous voulons rechercher l’expression_a_trouver.
  • position_de_depart: Il s’agit d’un paramètre facultatif qui nous permet de spécifier la position de départ de la recherche. Si non spécifié, la recherche commence depuis le début de la chaîne.

Examinons quelques exemples pour comprendre comment fonctionne la fonction SQL CHARINDEX:

Exemple 1: Trouver la position d’un caractère dans une chaîne

Dans cet exemple, nous voulons trouver la position du caractère ‘@’ dans l’adresse e-mail ‘rajendra.gupta16@gmail.com’.

SELECT CHARINDEX('@', 'rajendra.gupta16@gmail.com') AS PositionDuCaractere;

La sortie de cette requête sera la position du caractère ‘@’, qui est 17.

Exemple 2: Utilisation du paramètre position_de_depart

Nous pouvons également spécifier un paramètre position_de_depart pour commencer la recherche à partir d’une position spécifique dans la chaîne. Dans cet exemple, nous voulons trouver la position du caractère ‘.’ dans l’adresse e-mail, en commençant à partir de la position 11.

SELECT CHARINDEX('.', 'rajendra.gupta16@gmail.com', 11) AS PositionDuCaractere;

La sortie de cette requête sera la position du caractère ‘.’, qui est 23. La recherche commence à partir de la position 11 et s’arrête une fois qu’elle trouve une correspondance.

Exemple 3: Recherche d’une sous-chaîne

En plus de rechercher des caractères individuels, nous pouvons également rechercher des sous-chaînes dans une chaîne. Dans cet exemple, nous voulons rechercher la sous-chaîne ‘Rajendra’ dans la chaîne ‘Explorez SQL Server sur SQLShack avec les articles de Rajendra Gupta’.

DECLARE @ExpressionAChercher VARCHAR(100);
SET @ExpressionAChercher = 'Explorez SQL Server sur SQLShack avec les articles de Rajendra Gupta';
SELECT CHARINDEX('Rajendra', @ExpressionAChercher) AS PositionDuCaractere;

La sortie de cette requête sera la position de départ de la sous-chaîne ‘Rajendra’, qui est 32. Si la sous-chaîne n’est pas trouvée, la fonction renvoie 0.

Exemple 4: Gestion de plusieurs sous-chaînes correspondantes

Dans certains cas, nous pouvons avoir plusieurs sous-chaînes correspondantes dans une chaîne. Dans cet exemple, nous voulons rechercher la sous-chaîne ‘SQLShack’ dans la chaîne ‘Explorez SQL Server sur SQLShack avec les articles de Rajendra Gupta – SQLShack’.

DECLARE @ExpressionAChercher VARCHAR(100);
SET @ExpressionAChercher = 'Explorez SQL Server sur SQLShack avec les articles de Rajendra Gupta - SQLShack';
SELECT CHARINDEX('SQLShack', @ExpressionAChercher) AS PositionDuCaractere;

La sortie de cette requête sera la position de départ de la première occurrence de la sous-chaîne ‘SQLShack’, qui est 24. Si nous voulons commencer la recherche à partir d’une position spécifique, nous pouvons utiliser le paramètre position_de_depart.

Exemple 5: Utilisation de SQL CHARINDEX avec l’instruction SQL CASE

Nous pouvons utiliser la fonction SQL CHARINDEX en conjonction avec l’instruction SQL CASE pour vérifier l’existence d’une sous-chaîne spécifique dans une chaîne. Dans cet exemple, nous voulons vérifier si la sous-chaîne ‘SQLShack’ existe dans la chaîne ‘Explorez SQL Server avec des articles sur SQLShack’.

DECLARE @Nom AS VARCHAR(100) = 'Explorez SQL Server avec des articles sur SQLShack';
SELECT CASE WHEN CHARINDEX('SQLShack', @Nom) > 0 THEN 'Existe' ELSE 'N'existe pas' END AS TrouverSousChaine;

La sortie de cette requête sera ‘Existe’ si la sous-chaîne ‘SQLShack’ est trouvée dans la chaîne, et ‘N’existe pas’ sinon.

Exemple 6: Effectuer une recherche sensible à la casse

Par défaut, la fonction SQL CHARINDEX effectue une recherche insensible à la casse. Cependant, nous pouvons utiliser la collation pour effectuer une recherche sensible à la casse. Dans cet exemple, nous voulons rechercher la sous-chaîne ‘sqlshack’ dans la chaîne ‘Explorez SQL Server sur SQLSHACK avec les articles de Rajendra Gupta – SQLShack’.

DECLARE @ExpressionAChercher VARCHAR(100);
SET @ExpressionAChercher = 'Explorez SQL Server sur SQLSHACK avec les articles de Rajendra Gupta - SQLShack';
SELECT CHARINDEX('sqlshack', @ExpressionAChercher) AS PositionDuCaractere;

La sortie de cette requête sera la position de départ de la sous-chaîne ‘sqlshack’, qui est 24. Même si la casse de la sous-chaîne ne correspond pas exactement, la fonction renvoie toujours la sortie correcte. Pour effectuer une recherche sensible à la casse, nous pouvons utiliser la clause COLLATE avec une collation spécifique.

Exemple 7: Utilisation de SQL CHARINDEX avec une colonne de table

Nous pouvons également utiliser la fonction SQL CHARINDEX pour rechercher des sous-chaînes spécifiques dans des données stockées dans une table. Dans cet exemple, nous voulons vérifier la position du caractère ‘R’ dans la colonne ‘NomEmp’ de la table ‘Employe’.

SELECT TOP 10 [NomEmp], CHARINDEX('R', nomemp) AS "Position de R", [Ville], [Designation]
FROM [SQLShackDemo].[dbo].[Employe];

La sortie de cette requête inclura une nouvelle colonne qui montre la position du caractère ‘R’ dans la colonne ‘NomEmp’. Si ‘NomEmp’ ne contient pas le caractère spécifié, la fonction renvoie 0.

Ce ne sont que quelques exemples de la façon dont la fonction SQL CHARINDEX peut être utilisée dans SQL Server. C’est une fonction polyvalente qui peut être utilisée pour rechercher des caractères ou des sous-chaînes spécifiques dans des chaînes, à la fois dans des requêtes individuelles et dans des colonnes de table.

En conclusion, la fonction SQL CHARINDEX est un outil précieux pour rechercher et manipuler des données textuelles dans SQL Server. Elle nous permet de trouver la position de caractères ou de sous-chaînes dans des chaînes, et peut être utilisée dans une variété de scénarios. Comprendre comment utiliser cette fonction efficacement peut grandement améliorer nos compétences en SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.