Motifs LIKE et caractères génériques
Utilisez LIKE avec les caractères génériques % et _, comprenez la sensibilité à la casse et préférez ILIKE dans PostgreSQL pour les correspondances insensibles à la casse.
Motifs LIKE et caractères génériques est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Rôle de LIKE
LIKE compare une chaîne à un motif. Il utilise deux caractères génériques :
%— toute séquence, y compris une séquence vide_— exactement un caractère
Exemples simples
Effectuez une recherche par préfixe, par suffixe ou par sous-chaîne :
SELECT email FROM users WHERE email LIKE 'a%'; -- starts with a
SELECT email FROM users WHERE email LIKE '%@gmail.com'; -- ends with @gmail.com
SELECT email FROM users WHERE email LIKE '%admin%'; -- contains adminCaractères génériques à caractère unique
_ correspond exactement à un caractère. C’est idéal pour les codes de longueur fixe :
-- 6-char SKU starting with A:
SELECT * FROM products WHERE sku LIKE 'A_____';
-- US zip+4:
SELECT * FROM addresses WHERE zip LIKE '_____-____';Sensibilité à la casse
Par défaut, LIKE est sensible à la casse dans PostgreSQL. Utilisez ILIKE pour une comparaison insensible à la casse :
SELECT * FROM users WHERE email LIKE '%@gmail.com'; -- ✗ misses @GMAIL.com
SELECT * FROM users WHERE email ILIKE '%@gmail.com'; -- ✓Échapper les caractères génériques
Pour rechercher un % ou un _ littéral, utilisez une barre oblique inverse comme caractère d’échappement (ou définissez votre propre caractère ESCAPE) :
-- Match strings that contain '50%':
SELECT * FROM coupons WHERE code LIKE '%50\%%';
-- Custom escape character:
SELECT * FROM coupons WHERE code LIKE '%50!%%' ESCAPE '!';LIKE et index
Un index B-tree est utile uniquement pour les motifs avec préfixe :
-- Uses index (prefix is fixed):
SELECT * FROM users WHERE email LIKE 'alice%';
-- Does NOT use a normal index (leading wildcard):
SELECT * FROM users WHERE email LIKE '%example.com';Corriger les recherches avec caractère générique initial
Pour les recherches « %example% », utilisez un index GIN de trigrammes (pg_trgm) — ce sujet est traité dans Indexation avancée.
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE INDEX users_email_trgm_idx ON users USING GIN (email gin_trgm_ops);
SELECT * FROM users WHERE email LIKE '%example%'; -- now indexableNOT LIKE
Inversez la recherche :
SELECT * FROM emails WHERE subject NOT LIKE 'RE:%';SIMILAR TO et expressions régulières (PostgreSQL)
Pour des recherches par motif plus avancées :
-- SIMILAR TO — SQL regex (rarely used)
SELECT 'abc' SIMILAR TO '%(a|b)%'; -- TRUE
-- POSIX regex:
SELECT 'abc123' ~ '^[a-z]+[0-9]+$'; -- TRUE
SELECT 'ABC' ~* 'abc'; -- TRUE (case insensitive)Créer des champs de recherche
Lorsque vous connectez un champ de recherche utilisateur, neutralisez d’abord les caractères génériques dans la saisie afin d’éviter tout comportement inattendu :
-- Escape user input's special chars before concatenating to LIKE pattern,
-- or use to_tsquery for word-level search.
SELECT * FROM products
WHERE LOWER(name) LIKE LOWER('%' || $1 || '%');Ne recréez pas la recherche en texte intégral
Pour une recherche classée et adaptée à la langue dans des documents, utilisez tsvector + GIN, et non LIKE. Ce sujet est traité plus loin dans Indexation avancée.
Récapitulatif
LIKE est idéal pour les recherches simples par motif.
%= toute chaîne,_= un caractère- Utilisez ILIKE pour une recherche insensible à la casse
- Les recherches par préfixe utilisent B-tree ; les recherches par sous-chaîne nécessitent des trigrammes
Vérification rapide
Quel motif correspond aux chaînes qui se terminent par .com ?
Questions Fréquemment Posées
La leçon « Motifs LIKE et caractères génériques » est-elle gratuite ?
Oui — le texte complet de « Motifs LIKE et caractères génériques » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Motifs LIKE et caractères génériques » ?
Utilisez LIKE avec les caractères génériques % et _, comprenez la sensibilité à la casse et préférez ILIKE dans PostgreSQL pour les correspondances insensibles à la casse. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Motifs LIKE et caractères génériques » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Motifs LIKE et caractères génériques
- IN et NOT IN pour les ensembles
- BETWEEN pour les intervalles
- IS NULL, IS NOT NULL et COALESCE