Détecter une sous-chaîne de caractères
- MYPE SAS
- 17 avr.
- 2 min de lecture
Il arrive fréquemment d’avoir besoin de retrouver une sous-chaîne de caractères dans une chaîne de caractères. Voici les principales méthodes permettant de le faire, sur SQL Server, avec leurs avantages et inconvénients.
La méthode LIKE avec %
Le mot-clef LIKE permet de rechercher une sous-chaîne en utilisant des caractères génériques comme %.
Syntaxe :
SELECT *
FROM table
WHERE colonne LIKE '%sous_chaine%';
Avantages :
Simple et intuitif pour des recherches de base.
Flexible grâce aux ‘%’ (qui désigne n’importe quelle sous-chaîne de caractères, vide ou non), ou ‘_’ (qui désigne un seul caractère, quel qu’il soit).
Inconvénients :
Performances faibles sur de grandes tables.
Pas adapté à des recherches complexes.

La fonction CHARINDEX
La fonction CHARINDEX retourne la position de la première occurrence d’une sous-chaîne dans une chaîne. Si la sous-chaîne n’existe pas, la fonction retourne 0.
Syntaxe :
SELECT *
FROM table
WHERE CHARINDEX('sous_chaine', colonne) > 0;
Avantages :
Utile pour des validations ou des extractions.
Plus rapide que LIKE pour des recherches simples.
Inconvénients :
Pas de prise en charge des caractères génériques.

La fonction PATINDEX
La fonction PATINDEX combine les capacités de LIKE avec celles de CHARINDEX. Elle retourne la position de la première occurrence correspondant à un modèle avec des jokers.
Syntaxe :
SELECT *
FROM table
WHERE PATINDEX('%sous_chaine%', colonne) > 0;
Avantages :
Supporte les jokers (% et _) comme LIKE.
Retourne la position de la sous-chaîne comme CHARINDEX.
Inconvénients :
Plus lent que CHARINDEX.
Pas aussi simple que LIKE pour des recherches très basiques.

Recherche en Texte Intégral (Full-Text Search)
Pour des colonnes contenant de grandes quantités de texte, SQL Server propose une fonctionnalité spécialisée appelée Full-Text Search. Après avoir créé un index de texte intégral, vous pouvez effectuer des recherches avancées avec CONTAINS.
Syntaxe :
SELECT *
FROM table
WHERE CONTAINS(colonne, '"sous_chaine"');
Avantages :
Performant pour des recherches dans de grandes colonnes textuelles.
Supporte des opérations avancées.
Inconvénients :
Nécessite une configuration préalable (index en texte intégral).
Moins adapté à des recherches sur des chaînes courtes ou non textuelles.
La syntaxe du code à exécuter avant de pouvoir utiliser CONTAINS est la suivante :
--Création d'un catalogue de texte intégral
CREATE FULLTEXT CATALOG catalogue AS DEFAULT;
--Création d'un index de texte intégral
CREATE FULLTEXT INDEX ON table (colonne)
KEY INDEX id
ON catalogue
WITH STOPLIST = SYSTEM;
--
Retrouvez toutes nos formations en SQL sur https://www.apprendresql.com/ .
Comments