Une recherche SQL ne se limite pas toujours à comparer deux valeurs exactes. Avec SQL LIKE, vous pouvez repérer un début de nom, une séquence au milieu d’un texte ou un format précis. Encore faut-il choisir les bons caractères génériques, tenir compte de la casse et éviter les motifs qui freinent les requêtes.
L’article en bref
LIKE filtre les textes selon un motif, avec une syntaxe simple mais quelques subtilités propres aux moteurs SQL. Voici comment l’utiliser avec précision, y compris pour combiner plusieurs critères et préserver les performances.
- Syntaxe de base : Filtrez une colonne en comparant son contenu à un motif.
- Jokers utiles : Utilisez % pour plusieurs caractères et _ pour un seul.
- Critères combinés : Réunissez ou excluez plusieurs motifs avec les opérateurs logiques.
- Performances : Les motifs commençant par % peuvent ralentir certaines recherches.
À retenir : un motif bien ciblé rend les recherches plus lisibles et plus efficaces.
SQL LIKE : comprendre la syntaxe et les caractères génériques
L’opérateur LIKE sert à sélectionner des lignes à partir d’une forme de texte, plutôt que d’une valeur exacte. Dans une base de clients, il peut retrouver les noms commençant par une lettre, les villes contenant un fragment ou les références suivant un format donné.
La syntaxe LIKE s’inscrit dans une clause WHERE : SELECT colonnes FROM table WHERE colonne LIKE ‘motif’. Le motif de recherche se place entre apostrophes et peut contenir des caractères génériques pour représenter une partie variable de la chaîne.
| Motif | Résultat recherché | Interprétation |
|---|---|---|
| LIKE ‘a%’ | Valeurs commençant par a | Le joker % remplace zéro ou plusieurs caractères après a. |
| LIKE ‘%a’ | Valeurs terminant par a | Le texte peut contenir n’importe quoi avant a. |
| LIKE ‘%or%’ | Valeurs contenant « or » | La séquence peut apparaître à n’importe quelle position. |
| LIKE ‘_r%’ | Valeurs dont la deuxième lettre est r | Le joker _ représente un seul caractère. |
La différence entre joker % et joker _ est essentielle : le premier accepte une longueur variable, tandis que le second correspond à une position unique. Ainsi, LIKE ‘a__%’ cible les textes commençant par a et comptant au moins trois caractères.
Choisir le bon motif selon la recherche
Imaginez une équipe qui cherche dans une table Customers tous les noms débutant par « Mar ». Le motif ‘Mar%’ est plus précis que ‘%Mar%’ : il exclut les chaînes où la séquence apparaît uniquement au milieu ou à la fin.
Pour vérifier une structure, le joker _ devient plus pratique. Un motif comme ‘A_7%’ exige un A en première position, n’importe quel caractère en deuxième, puis un 7 en troisième ; il peut ensuite être suivi d’autres caractères.
Combiner plusieurs conditions avec LIKE avancé
Une recherche portant sur plusieurs variantes demande généralement plusieurs conditions LIKE reliées par OR. Par exemple, WHERE ville LIKE ‘Nantes%’ OR ville LIKE ‘Rennes%’ sélectionne les lignes correspondant à l’un ou l’autre des débuts de nom.
AND sert à exiger plusieurs critères simultanément. NOT LIKE écarte un motif indésirable, par exemple les références qui commencent par un préfixe réservé. Lorsque OR et AND cohabitent, les parenthèses rendent la logique explicite et évitent les résultats inattendus.
- OR : réunir des motifs alternatifs dans une même recherche.
- AND : imposer plusieurs conditions à une ligne.
- NOT LIKE : exclure les valeurs correspondant à un motif.
- Parenthèses : clarifier l’ordre d’évaluation des critères combinés.
Exemple : WHERE (nom LIKE ‘A%’ OR nom LIKE ‘M%’) AND pays = ‘France’ retient les noms commençant par A ou M, mais seulement pour les lignes françaises. Une formulation nette aide autant la base que la personne qui devra relire la requête six mois plus tard.
Rechercher un caractère spécial avec ESCAPE
Les signes % et _ sont interprétés comme des jokers dans un motif. Pour rechercher leur présence réelle dans une valeur, il faut les échapper ; la méthode dépend du moteur SQL et peut utiliser la clause ESCAPE avec un caractère choisi.
Par exemple, une requête de type LIKE ‘%!_%’ ESCAPE ‘!’ traite le souligné comme un caractère littéral. Il est préférable de vérifier la syntaxe prise en charge par le système utilisé, car les détails peuvent varier entre moteurs.
Sensibilité à la casse et collation SQL
La sensibilité à la casse n’est pas identique partout : selon le moteur et la configuration, LIKE ‘mar%’ peut également correspondre à « Marc » ou ne trouver que les valeurs écrites en minuscules. La collation SQL définit notamment les règles de comparaison des textes, dont la prise en compte des majuscules, des accents ou de certaines variantes linguistiques.
Pour rendre le comportement prévisible, consultez la collation de la colonne ou de la base, puis testez la requête avec des exemples représentatifs. Certaines bases permettent aussi de transformer les deux côtés avec LOWER ou UPPER, mais cette approche peut affecter l’utilisation d’un index selon le moteur.
Dans une base contenant des données multilingues, les accents et les variantes de casse méritent une attention particulière. Un test sur quelques noms réels permet de confirmer le comportement avant de déployer un filtre à plus grande échelle.
Optimisation des requêtes SQL LIKE
Un motif commençant par un joker, comme ‘%son’, oblige souvent le moteur à examiner davantage de valeurs, car le début de la chaîne ne permet pas de réduire facilement la recherche. À l’inverse, ‘son%’ peut profiter d’un index dans certaines configurations, sans que cela soit garanti pour tous les moteurs ni toutes les collations.
Pour améliorer l’optimisation des requêtes, combinez le filtre textuel avec des critères utiles et sélectifs, comme un pays, une catégorie ou une date. Sur une table importante, comparez les plans d’exécution et le temps de réponse avec des données représentatives : une requête rapide sur quelques dizaines de lignes peut se comporter autrement à grande échelle.
- Préférez un début connu, par exemple ‘pro%’ plutôt que ‘%pro%’.
- Évitez les motifs inutilement larges lorsqu’un critère plus précis existe.
- Vérifiez les index et le plan d’exécution du moteur utilisé.
- Testez les effets de LOWER, UPPER et de la collation sur les performances.
Enfin, adaptez les jokers au dialecte SQL : la plupart des moteurs courants utilisent % et _, tandis que Microsoft Access peut employer * et ? selon son mode de requête. Un motif correct dans un environnement n’est donc pas forcément transposable tel quel dans un autre.
À quoi sert SQL LIKE ?
SQL LIKE filtre des lignes en comparant une colonne textuelle à un motif. Il permet de chercher un début, une fin ou une séquence partielle plutôt qu’une valeur exacte.
Quelle différence entre le joker % et le joker _ ?
% remplace zéro, un ou plusieurs caractères. _ correspond à un seul caractère et permet de fixer plus précisément la longueur ou la position dans le motif.
Comment rechercher plusieurs motifs avec LIKE ?
Reliez plusieurs conditions LIKE avec OR pour accepter différentes variantes, avec AND pour imposer plusieurs critères, ou utilisez NOT LIKE pour exclure un motif. Les parenthèses clarifient les combinaisons.
Pourquoi une recherche LIKE peut-elle être lente ?
Les motifs qui commencent par % sont souvent plus difficiles à optimiser avec un index. Privilégiez un préfixe connu, combinez le filtre avec des critères sélectifs et examinez le plan d’exécution.
Je suis Maxime Aubert, rédacteur tech installé à Nantes. Depuis quinze ans, je teste, bidouille et compare tout ce qui s’allume : smartphones, setups gaming, platines et maison connectée. Sur Unblogged, je vous aide à choisir sans jargon et sans survente — juste ce qui marche vraiment au quotidien.





