💡 En Bref : Le SQL LIKE, c’est quoi ?
Tu cherches à filtrer des données textuelles dans ta base SQL ? L’opérateur LIKE est ton outil. Il permet de trouver des chaînes de caractères selon un modèle (pattern), un peu comme une recherche par « * » sur ton ordinateur.
- 🛠️ À quoi ça sert ? Rechercher des noms, des emails, des codes qui correspondent partiellement à un critère.
- 🎯 Les deux wildcards essentielles :
%(remplace n’importe quelle suite de caractères) et_(remplace un seul caractère). - ⚡ La syntaxe de base :
SELECT * FROM table WHERE colonne LIKE 'motif%'; - 🚫 La négation :
NOT LIKEpour exclure les résultats. - ⚠️ Points d’attention : Peut être lent sur de très grosses tables si mal utilisé. Des alternatives comme les index plein texte existent.
Plongeons dans le détail pour maîtriser cet opérateur incontournable.
Que tu sois développeur, analyste de données ou simplement en train d’apprendre le SQL, tu vas forcément croiser la route de l’opérateur LIKE. C’est l’un des moyens les plus simples et puissants pour effectuer des recherches floues dans tes bases de données. Contrairement au = qui exige une correspondance parfaite, LIKE te donne de la flexibilité grâce aux caractères génériques (wildcards).
Imagine que tu doives lister tous les clients dont le nom de famille commence par « Mar », ou trouver tous les produits dont la référence contient « 2025 ». C’est exactement le job de LIKE. On va passer en revue tout ce qu’il faut savoir pour l’utiliser comme un pro, sans se tromper.
🧠 Comprendre les Wildcards : Les Jokers de ta Recherche
La force de LIKE réside dans ses deux jokers principaux. Apprends-les par cœur, ils sont ton passeport pour des recherches efficaces.
| Wildcard | Signification | Exemple Pratique | Résultats Exemples |
|---|---|---|---|
% |
Remplace n’importe quelle séquence de caractères (de zéro à l’infini). | LIKE 'Dat%' |
« Data », « Database », « Datacamp » |
_ (underscore) |
Remplace exactement un caractère (quel qu’il soit). | LIKE 'Ch_teau' |
« Château », « Chateau » |
Astuce : Pense au % comme à « n’importe quoi, de n’importe quelle longueur », et au _ comme à « un seul caractère mystère ».
🔍 Construire ses Motifs : Exemples Concrets et Utiles
La théorie, c’est bien, la pratique, c’est mieux. Voici les combinaisons de motifs que tu vas utiliser au quotidien.
📌 Cas d’Usage Fréquents
- Commence par :
WHERE ville LIKE 'Par%'→ Trouve « Paris », « Parly ». - Se termine par :
WHERE email LIKE '%.fr'→ Les emails en .fr. - Contient :
WHERE description LIKE '%urgent%'→ Tout texte avec le mot « urgent ». - Structure précise :
WHERE code LIKE 'FR_2025__'→ Un code genre « FRA202501 ». - Combinaison :
WHERE nom LIKE 'M%' AND nom LIKE '%e'→ Noms commençant par M ET finissant par e.
🔄 Inverser la Logique avec NOT LIKE
Parfois, tu veux exclure certains motifs plutôt que les inclure. C’est là que NOT LIKE entre en scène.
-- Sélectionne tous les produits SAUF ceux dont le nom contient "test"
SELECT * FROM produits
WHERE nom_produit NOT LIKE '%test%';
C’est particulièrement utile pour nettoyer des données ou exclure des entrées de démonstration.
🚀 Aller Plus Loin : Astuces et Bonnes Pratiques
Maintenant que tu maîtrises les bases, voici quelques informations pour optimiser ton utilisation.
📊 Sensibilité à la Casse (Case Sensitivity)
Le comportement de LIKE par rapport aux majuscules/minuscules dépend de ton SGBD et de son collation.
- Par défaut, sous MySQL, c’est souvent insensible à la casse :
LIKE 'sql'trouvera aussi « SQL ». - Sous PostgreSQL, il faut utiliser
ILIKEpour une recherche insensible :WHERE nom ILIKE 'paul'.
Conseil : Vérifie toujours la documentation de ta base de données ou fais un test rapide.
⚡ Performance et Indexation
LIKE peut être un frein aux performances sur des tables de plusieurs millions de lignes, surtout si le wildcard % est placé au début du motif (LIKE '%trouve'). Dans ce cas, l’optimiseur SQL ne peut souvent pas utiliser les index standards de la colonne.
Que faire ? Pour des recherches textuelles complexes (mots entiers, synonymes), explore les index FULLTEXT de MySQL/PostgreSQL ou des solutions dédiées comme Elasticsearch.
🧹 Échapper les Wildcards
Et si tu cherches littéralement un pourcentage « % » ou un underscore « _ » dans ton texte ? Il faut les échapper (escape). La méthode varie.
Exemple avec SQL Server :
-- Cherche la chaîne exacte "10% de réduction"
SELECT * FROM promotions
WHERE texte LIKE '10[%] de réduction' ESCAPE '[';
Sous d’autres SGBD, on utilise souvent la clause ESCAPE avec un caractère de son choix, comme un backslash .
❓ F.A.Q. : Les Questions que tu te Poses
🤔 Quelle est la différence entre LIKE ‘texte’ et = ‘texte’ ?
Si ton motif ne contient aucun wildcard (% ou _), alors LIKE 'exact' et = 'exact' donneront le même résultat. Cependant, LIKE peut avoir un comportement légèrement différent concernant les espaces en fin de chaîne selon le SGBD. Pour une recherche d’égalité stricte, privilégie l’opérateur = qui est aussi plus clair dans l’intention.
🔧 Peut-on utiliser LIKE sur des nombres ou des dates ?
Techniquement, oui, si la colonne numérique ou la date est implicitement convertie en texte par le SGBD. Mais c’est une très mauvaise pratique ! C’est inefficace et peu lisible. Pour les nombres, utilise les opérateurs de comparaison (>, <, =). Pour les dates, utilise les fonctions dédiées (YEAR(), DATE(), intervalles).
🌐 Les wildcards [ ] et [^] de SQL Server, ça marche partout ?
Non, ces syntaxes (ex: LIKE '[A-C]%' pour une lettre entre A et C) sont propres à Microsoft SQL Server et à Sybase. Elles ne font pas partie du standard SQL ANSI. Pour des besoins similaires dans d'autres bases comme PostgreSQL ou MySQL, il faudra utiliser l'opérateur ~ (expressions régulières) ou des combinaisons de LIKE/OR. Toujours consulter la documentation officielle de son SGBD.
🎯 Conclusion
L'opérateur LIKE est un outil fondamental dans ta boîte à SQL. En maîtrisant les wildcards % et _, ainsi que leurs combinaisons, tu pourras écrire des requêtes de filtrage textuel à la fois puissantes et précises. N'oublie pas de faire attention aux problématiques de performance sur les grandes tables et de bien comprendre le comportement de ton SGBD concernant la casse. Avec un peu de pratique, tu l'utiliseras naturellement pour explorer et analyser tes données.
Article rédigé en se basant sur les spécifications SQL standard et les bonnes pratiques communes aux principaux SGBD (MySQL, PostgreSQL, SQL Server) en 2025. Pour les fonctionnalités très spécifiques, référez-vous toujours à la documentation de votre système.