par Mike Cravitz Ce mois-ci, nous allons voir l'utilisation du prédicat Between dans la clause Where d'une requête SQL, dans le but de trouver une valeur située entre deux bornes Je vous présente aussi un puissant mécanisme, appelé sous-requête. Et, pour faire bonne mesure, je montre comment utiliser la fonction SQL Count pour renvoyer le nombre de lignes d'une table de résultat de requête. En route !
Prédicat Between et sous-requêtes SQL
Le prédicat Between sert à référencer un ensemble de lignes dans
lesquelles une valeur de colonne ou autre expression se situe dans une certaine
fourchette. Pour en comprendre le fonctionnement, prenons l’exemple de la table
YouOweMe. La figure 1 illustre le SQL servant à créer la table et la table elle-même.
La requête
Select *
From YouOweMe
Where AmtDue Between 50 and 110
renvoie le résultat illustré figure 2.
Notons que, comme Between est inclusif, SQL vérifie les deux bornes (inférieure
et supérieure) indiquées, pour déterminer si le prédicat de la fourchette est
satisfait. C’est pourquoi la table de résultat inclut Surly Sue, qui a une dette
correspond à la borne inférieure (50) et BadDebt Bob, parce que sa dette correspond
à la borne supérieure de la fourchette donnée (110).
Supposons maintenant que nous voulions produire une requête pour connaître tous
les débiteurs dont le nom commence par B, C ou D (autrement dit, B et D inclus).
A première vue, la requête suivante pourrait faire l’affaire :
Select *
From YouOweMe
Where DebtorName Between ‘B’ and ‘D’
Mais la figure 3 montre que l’on récupère des lignes dans lesquelles la première
lettre du nom est B ou C mais pas D (Deadbeat Charlie n’est pas renvoyé). Normal,
puisque nous avons défini la colonne DebtorName comme une zone caractère de
longueur 20 (figure 1). Les valeurs auxquelles nous comparons la zone caractère
ont toutes deux une longueur de un caractère. A l’instar de la plupart des langages
évolués, SQL étend la longueur d’une ou de plusieurs valeurs de comparaison
plus courtes pour s’aligner sur la plus longue, et remplit à droite avec des
blancs les valeurs étendues avant de comparer. Dans le cas présente, SQL ajoute
aux valeurs les plus courtes (B et D) 19 blancs supplémentaires pour égaler
la longueur de DebtorName avant de faire la comparaison. SQL renvoie donc un
ensemble de lignes dans lesquelles DebtorName se situe entre B suivi de 19 blancs
et D suivi de 19 blancs. Comme DebtorName DeadBeat Charlie est supérieur à D
suivi de 19 blancs, il est exclu du résultat de la requête.
Pour inclure des noms commençant par la lettre D, nous pouvons indiquer le prédicat
DebtorName Between ‘B’ and ‘E’
La meilleure méthode consiste à effectuer la comparaison
sur le premier caractère du nom au lieu des 20 caractères
pour obtenir le résultat souhaité. Mais, s’il existe une ligne dans laquelle
DebtorName est égal à la lettre E suivie de 19 blancs, le prédicat ci-dessus
la sélectionnera également.
Pour limiter le résultat de la requête à tous les noms commençant par une lettre
entre B et D inclus, la meilleure méthode consiste à effectuer la comparaison
sur le premier caractère du nom au lieu des 20 caractères, en utilisant le prédicat
Substr( DebtorName, 1, 1 )
Between ‘B’ and ‘D’
La fonction scalaire Substr (Substring) du prédicat ne choisit que le premier
caractère de DebtorName, et donc SQL n’a pas besoin d’allonger les valeurs B
et D. (Pour revoir la fonction Substr de SQL, voir l’article » Manipuler des
dates en SQL « , NEWSMAGAZINE, janvier 2000.)
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Ransomware : l’IA accélère le vol de données et place les dirigeants dans le viseur
- La connectivité, nouvelle colonne vertébrale de l’expérience en magasin
- Assises de la Sécurité 2026 : osons remettre l’humain au centre et reprendre les commandes
- Réforme de la facturation électronique 2026 : de la contrainte réglementaire à un véritable enjeu différenciant
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
