LIKE Oracle SQL : filtrer avec %, _ et ESCAPE (+ REGEXP_LIKE)

L'opérateur LIKE en Oracle SQL : jokers % et _, NOT LIKE, ESCAPE, insensibilité à la casse et REGEXP_LIKE, avec exemples.

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).

Publicité

🧪 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 + rtin

NOT 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 casse

Performance : 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.

Un nouveau tutoriel SQL par semaine

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Publicité