SQL Wildcards

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