Retour à la liste des articles Articles
5 minutes de lecture

Comment utiliser un joker SQL

Le joker SQL nous permet de filtrer les données correspondant à certains modèles en SQL. Nous utilisons les jokers SQL avec l'opérateur LIKE dans la clause WHERE d'une requête pour filtrer les données. Dans cet article pour débutants, nous allons voir tout ce que vous devez savoir sur les jokers SQL de base.

Si vous aimez jouer aux cartes, vous savez que les jokers peuvent remplacer n'importe quelle autre carte de votre jeu. De même, les caractères génériques SQL peuvent remplacer un ou plusieurs caractères.

Pour commencer à utiliser les caractères génériques SQL, examinons une simple table customers pour notre animalerie :

Joker SQL avec l'opérateur LIKE

Imaginez que vous voyez un client quitter une animalerie sans payer sa commande. Ce sont des choses qui arrivent, il a simplement oublié. Vous savez que le vendeur de l'animalerie possède une base de données de clients, et vous lui demandez s'il connaît le nom du client afin d'en extraire l'adresse et de le relancer. Mais le vendeur n'est pas sûr du nom du client. Il sait que le nom du client se termine par deux lettres, oset qu'il était court, environ trois lettres seulement. C'était peut-être quelque chose comme Tos, Los, Kos, etc. En utilisant la puissance d'un caractère générique SQL, vous pouvez traiter une lettre ambiguë dans sa base de données. Pour représenter un caractère, nous utilisons le joker SQL underscore. Notre requête SELECT ressemble à ceci :

SELECT * FROM customers WHERE surname LIKE ‘_os’;

Notre requête renvoie maintenant tous nos noms de famille, et nous pouvons éviter d'écrire la déclaration pour chaque combinaison de mots :

SELECT * FROM customers WHERE surname IN (‘Kos’,’Tos’,’Los’);

Notez que la liste de noms de famille ci-dessus n'est en aucun cas exhaustive, car le caractère générique de soulignement remplace n'importe quel caractère, même s'il ne s'agit pas d'une lettre !

Attention : Utilisation de caractères génériques SQL sans l'opérateur LIKE

Les caractères génériques SQL ne fonctionnent que dans l'opérateur LIKE. Si vous placez un joker dans une chaîne ordinaire qui n'est pas un argument de l'opérateur LIKE, SQL traitera ce joker comme un caractère littéral apparaissant dans la chaîne. Par exemple, considérez cette requête alternative qui n'utilise pas l'opérateur LIKE :

SELECT * FROM customers WHERE surname = ‘_os’;

Cette requête rechercherait tous les noms de famille qui sont littéralement égaux à '_os', et vous pouvez parier qu'il n'y a pas de tels enregistrements dans notre table. Il s'agit d'une erreur typique de débutant. Soyez donc prudent lorsque vous utilisez des caractères génériques SQL.

Inversion des filtres joker SQL

Pour obtenir l'inverse d'un filtre joker SQL, par exemple pour trouver tous les clients dont le nom de famille n'est pas Los, Tos, Kos, etc., il suffit d'appliquer une négation, NOT, à l'opérateur LIKE :

SELECT * FROM customers WHERE surname NOT LIKE ‘_os’;

Utilisation des caractères génériques SQL pour représenter une collection de caractères

Le caractère générique de soulignement n'est pas le seul disponible en SQL. Un caractère générique SQL plus couramment utilisé est le signe pourcentage (%), qui est utilisé pour représenter un ou plusieurs caractères. Ainsi, si nous souhaitons répertorier tous les clients qui vivent dans des villes allemandes dont le nom se termine par "burg", nous devons écrire la requête suivante :

SELECT * FROM customers WHERE city LIKE ‘%burg’;

Cette requête retournera tous les enregistrements des clients dont la ville de résidence est comme Hambourg, Augsbourg, Oldenbourg, Duisbourg, et autres.

De même que nous avons annulé le caractère générique SQL de soulignement, nous pouvons également annuler le caractère générique SQL de pourcentage. Ainsi, si nous souhaitons extraire les enregistrements des clients dont la ville de résidence ne se termine pas par 'burg', nous écrirons :

SELECT * FROM customers WHERE city NOT LIKE ‘%burg’;

Remarque : évitez, si possible, d'utiliser le caractère générique de pourcentage au début d'une chaîne de caractères avec l'opérateur LIKE. Cette construction est très coûteuse, car la base de données doit évaluer chaque combinaison de chaînes de caractères correspondant à ce motif de fin. L'utilisation de % après certains caractères est moins coûteuse en termes de ressources informatiques, car la base de données connaît déjà l'espace des chaînes de caractères qu'elle doit évaluer.

Combinaison de caractères génériques dans les instructions LIKE

Il est important de noter que vous pouvez combiner des caractères génériques SQL. Si vous souhaitez rechercher tous les clients dont la ville de résidence commence par un 'W', se termine par 'burg' et comporte au moins une lettre entre le 'W' et 'burg', vous pouvez écrire :

SELECT * FROM customers WHERE city NOT LIKE ‘W_%burg’;

Devenir sauvage avec les caractères génériques SQL

Dans cet article, nous avons vu comment utiliser les jokers SQL pour filtrer les tables. Nous n'avons abordé ici que les bases. Pour en savoir plus sur les jokers SQL, je vous recommande vivement de vous familiariser avec les expressions régulières. Mais méfiez-vous, car il existe un dicton en informatique : Si vous essayez de résoudre un problème à l'aide d'expressions régulières, vous vous retrouverez avec deux problèmes. Les expressions régulières sont un sujet avancé, il faut donc avoir un peu d'expérience avant d'essayer de les maîtriser. Consultez le site Petite leçon de LearnSQL.fr sur les caractères génériques pour acquérir plus d'expérience.