Un caractère “wildcard” est utilisé pour se substituer à n’importe quel autre caractère, au sein d’une chaîne de caractère. Ces caractères wildcards sont utilisés dans l’opérateur “LIKE“. Voici les 2 exemples de caractères wildcards :
- % : le symbole pourcentage représente zéro, un ou plusieurs caractères joker.
- _ : le symbole underscore représente un seul caractère joker.
A noter : cette page explique l’usage de ces 2 caractères jokers, toutefois il ne faut pas confondre cette page avec le terme “wildcard” qui désigne l’astérisque utilisé dans une requête de lecture, qui désigne toutes les colonnes (exemple : SELECT * FROM table). Cette page d’explication n’évoquera d’explication concernant cet astérisque.
Syntaxe
Requête SQL pour chercher les enregistrements pour lesquels la colonne “nom_de_colonne” débute par la lettre “a” :
SELECT * FROM table WHERE nom_de_colonne LIKE 'a%'
Requête SQL cherchant les enregistrements terminant par la lettre “a” :
[...] WHERE colonne LIKE '%a'
Requête SQL cherchant les enregistrements qui possède la lettre “a” :
[...] WHERE colonne LIKE '%a%'
Requête SQL cherchant les enregistrements qui possède la lettre “a” en 2ème caractère :
[...] WHERE colonne LIKE '_a%'
Requête SQL cherchant les enregistrements qui débute par “a” et se termine par z :
[...] WHERE colonne LIKE 'a%z'
Exemple
Prenons l’exemple d’une table contenant la liste des utilisateurs, incluant une colonne avec l’email et une autre avec la date d’inscription.
[table "162" not found /]Usage 1
Il est possible de chercher en une requête SQL la liste des utilisateurs dont l’email se termine par “@example.com”, grâce à cette requête :
SELECT * FROM utilisateur WHERE email LIKE '%@example.com'
Résultats :
[table "163" not found /]Cet usage est pratique lorsqu’il est nécessaire de chercher tous les utilisateurs qui font parti de la même société.
Usage 2
Une simple requête SQL peut aider à chercher tous les utilisateurs qui se sont inscrit au mois de septembre 2018 grâce à la requête suivante :
SELECT * FROM utilisateur WHERE date_inscription LIKE '2018-09-%'
Résultats :
[table "164" not found /]