Les wildcards SQL

Accueil Tags Recherche

27 Juillet 2019

Les wildcards SQL

Et si un autre wildcard existait ?

En faisant quelques recherches LIKE dans une base de données cette semaine, je suis tombé sur un résultat inattendu où ma requête retournait bien plus de lignes que prévu. C’est à ce moment que j’ai découvert un wildcard SQL dont j’ignorais l’existence, tellement basique qu’il valait bien que je sorte ce blog de son sommeil annuel.

Le wildcard %

Le plus connu (voire même le seul), ce wildcard permet de remplacer N caractères :

SELECT * FROM departements WHERE code LIKE '9%';
-- 90   Territoire de Belfort
-- 91   Essonne
-- 92   Hauts-de-Seine
-- 93   Seine-Saint-Denis
-- 94   Val-de-Marne
-- 95   Val-d'Oise
-- 971  Guadeloupe
-- 972  Martinique
-- 973  Guyane
-- 974  La Réunion
-- 976  Mayotte

Le wildcard _

Le planqué, ce wildcard permet de remplacer un seul et unique caractère :

SELECT * FROM departements WHERE code LIKE '9_';
-- 90   Territoire de Belfort
-- 91   Essonne
-- 92   Hauts-de-Seine
-- 93   Seine-Saint-Denis
-- 94   Val-de-Marne
-- 95   Val-d'Oise

Vous pouvez bien évidemment utiliser les deux conjointement et/ou plusieurs fois, pour faire des smileys ou d’autres choses plus utiles :

SELECT * FROM departements WHERE name LIKE '%-__-%';
-- 04   Alpes-de-Haute-Provence
-- 13   Bouches-du-Rhône
-- 28   Eure-et-Loir
-- 2A   Corse-du-Sud
-- 35   Ille-et-Vilaine
-- 37   Indre-et-Loire
-- 41   Loir-et-Cher
-- 47   Lot-et-Garonne
-- 49   Maine-et-Loire
-- 54   Meurthe-et-Moselle
-- 62   Pas-de-Calais
-- 63   Puy-de-Dôme
-- 71   Saône-et-Loire
-- 77   Seine-et-Marne
-- 82   Tarn-et-Garonne
-- 92   Hauts-de-Seine
-- 94   Val-de-Marne

Et enfin, comme pour le wildcard %, il faudra l’échapper en \_ pour recherche un underscore dans vos tables.

Liens