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 /]