L'opérateur LIKE filtre les chaînes de caractères selon un motif dans la clause WHERE. Deux jokers : % (zéro ou plusieurs caractères) et _ (exactement un caractère).
🧪 Testez ce code vous-même : exécutez ces requêtes gratuitement dans notre SQL Playground en ligne — sans installation, directement dans le navigateur.
Syntaxe et jokers
SELECT * FROM employes WHERE nom LIKE 'Mar%'; -- commence par Mar
SELECT * FROM employes WHERE nom LIKE '%tin'; -- finit par tin
SELECT * FROM employes WHERE nom LIKE '%ar%'; -- contient ar
SELECT * FROM employes WHERE nom LIKE 'M_rtin'; -- M + 1 caractère + rtinNOT LIKE
SELECT * FROM produits WHERE code NOT LIKE 'TMP%';Échapper % ou _ avec ESCAPE
Pour chercher un vrai caractère % ou _ dans les données :
SELECT * FROM remises WHERE libelle LIKE '%50\%%' ESCAPE '\';LIKE insensible à la casse
LIKE est sensible à la casse en Oracle. La solution classique : UPPER() des deux côtés.
SELECT * FROM employes WHERE UPPER(nom) LIKE UPPER('mar%');Aller plus loin : REGEXP_LIKE
Pour des motifs complexes, Oracle propose les expressions régulières :
-- noms commençant par Mar ou Mor
SELECT * FROM employes WHERE REGEXP_LIKE(nom, '^M[ao]r', 'i'); -- 'i' = insensible à la cassePerformance : attention au % en début de motif
LIKE 'Mar%' peut utiliser un index sur la colonne ; LIKE '%tin' force un full scan. Sur de gros volumes, envisagez Oracle Text ou une colonne inversée indexée.
Questions fréquentes
Quelle différence entre % et _ dans LIKE ?
% remplace zéro, un ou plusieurs caractères ; _ remplace exactement un caractère. ‘A%’ matche A, Alice, Anne ; ‘A_’ ne matche que les chaînes de 2 caractères commençant par A.
Comment rendre LIKE insensible à la casse en Oracle ?
Appliquez UPPER() ou LOWER() des deux côtés (WHERE UPPER(nom) LIKE ‘MAR%’), ou utilisez REGEXP_LIKE avec l’option ‘i’.
LIKE peut-il utiliser un index ?
Oui si le motif ne commence pas par un joker : LIKE ‘Mar%’ exploite un index B-tree classique. LIKE ‘%tin’ impose un parcours complet de la table.
