top of page
Rechercher

Détecter une sous-chaîne de caractères

  • Photo du rédacteur: MYPE SAS
    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.


Exemple d'utilisation du mot-clef LIKE
Exemple d'utilisation du mot-clef LIKE

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.


Exemple d'utilisation du mot-clef CHARINDEX
Exemple d'utilisation du mot-clef CHARINDEX

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.


Exemple d'utilisation du mot-clef PATINDEX
Exemple d'utilisation du mot-clef PATINDEX

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


bottom of page