Temps de lecture approximative : 10 minutes

Opérateur SQL LIKE

En SQL, l'opérateur LIKE permet de faire une recherche suivant un modèle sur les valeurs d'une colonne. Il existe plusieurs modèles de recherches (pattern en anglais) que nous détaillerons par la suite. Une nouvelle fois, cet opérateur s'utilise avec la commande WHERE. C'est un opérateur extrémement puissant qui offre de nombreuses possibilités. L’utilisation la plus basique de ce dernier s’effectue de la manière suivante :

SQL
SELECT une_colonne FROM une_table WHERE une_colonne LIKE un_modele;

Cette requête SQL va donc sélectionner, grâce à l'opérateur LIKE, les enregistrements provenant de la table nommée une_table et dont la valeur de la colonne une_colonne respecte le modèle de recherche un_modele. Dans cet exemple, le modèle n’a pas été défini.

Caractères jokers (wildcards)

L'opérateur LIKE est inséparable des caractères jokers (wildcards) : % (pourcentage) et _ (underscore). Un caractère joker est utilisé pour se substituer à n'importe quel autre caractère, au sein d'une chaîne de caractères. Ci-dessous quelques précisions.

  • Joker % : il représente aucun, un seul ou plusieurs caractères.
  • Joker _ : il représente un seul et unique caractère.

Modèles de recherche

Le nombre de modèles n'a de limite que votre imagination. Vous êtes libre d'utiliser le modèle que vous souhaitez en fonction de vos besoins. Ci-après une liste d'exemples de modèles de recherche avec l'opérateur LIKE.

Liste d'exemples de modèles pour l'opérateur LIKE
Modèle Commentaire
LIKE "a%" Recherche toutes les chaînes de caractères qui commencent par le caractère a.
LIKE "%a" Recherche toutes les chaînes de caractères qui terminent par le caractère a.
LIKE "%a%" Recherche toutes les chaînes de caractères qui contiennent au moins un caractère a.
LIKE "a%b" Recherche toutes les chaînes de caractères qui commencent par le caractère a et terminent par le caractère b.
LIKE "a__" Recherche toutes les chaînes de caractères de trois caractères qui commencent par le caractère a.
LIKE "_a%" Recherche toutes les chaînes de caractères qui possèdent le caractère a en deuxième position.

Afin de mettre en évidence l'utilisation de l'opérateur LIKE et de comprendre rapidement comment ce dernier fonctionne, voyons sans plus attendre un exemple simple. Pour cet exemple, nous utiliserons la table clients qui contient les colonnes et données suivantes.

Table : clients
id prenom nom email cp ville
1 Marine Leroy mleroy@test.com 75000 Paris
2 Jean René jrene@example.com 69000 Lyon
3 Ted Bundy tbundy@example.com 77000 Melun
4 Paul Bismuth pbismuth@yeah.com 77300 Fontainebleau
5 Caroline Rodriguez crodriguez@yeah.com 77300 Fontainebleau
6 Adeline Mendez amendez@1.com 76600 Le Havre

Rechercher les clients dont l'adresse email termine par @yeah.com

SQL
SELECT * FROM clients WHERE email LIKE "%@yeah.com";
Résultat
id prenom nom email cp ville
4 Paul Bismuth pbismuth@yeah.com 77300 Fontainebleau
5 Caroline Rodriguez crodriguez@yeah.com 77300 Fontainebleau

Rechercher les clients dont le code postal commence par 77

SQL
SELECT * FROM clients WHERE cp LIKE "77%";
SELECT * FROM clients WHERE cp LIKE "77___";
Résultat
id prenom nom email cp ville
3 Ted Bundy tbundy@example.com 77000 Melun
4 Paul Bismuth pbismuth@yeah.com 77300 Fontainebleau
5 Caroline Rodriguez crodriguez@yeah.com 77300 Fontainebleau

Rechercher les clients dont le prénom contient au moins un e

SQL
SELECT * FROM clients WHERE prenom LIKE "%e%";
Résultat
id prenom nom email cp ville
1 Marine Leroy mleroy@test.com 75000 Paris
2 Jean René jrene@example.com 69000 Lyon
3 Ted Bundy tbundy@example.com 77000 Melun
5 Caroline Rodriguez crodriguez@yeah.com 77300 Fontainebleau
6 Adeline Mendez amendez@1.com 76600 Le Havre

Rechercher les clients dont le prénom comporte exactement 4 caractères

SQL
SELECT * FROM clients WHERE prenom LIKE "____";
Résultat
id prenom nom email cp ville
2 Jean René jrene@example.com 69000 Lyon
4 Paul Bismuth pbismuth@yeah.com 77300 Fontainebleau

Rechercher les clients dont le prénom comporte un e en deuxième position

SQL
SELECT * FROM clients WHERE prenom LIKE "_e%";
Résultat
id prenom nom email cp ville
2 Jean René jrene@example.com 69000 Lyon
3 Ted Bundy tbundy@example.com 77000 Melun