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