Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Une condition BETWEEN
teste les expressions pour l’inclusion dans une plage de valeurs, à l’aide des mots-clés BETWEEN
et AND
.
Syntaxe
expression [ NOT ] BETWEEN expression AND expression
Les expressions peuvent être de type de données numeric, character ou datetime, mais elles doivent être compatibles. La plage est inclusive.
Exemples
Le premier exemple comptabilise le nombre de transactions ayant enregistré des ventes de 2, 3 ou 4 billets :
select count(*) from sales
where qtysold between 2 and 4;
count
--------
104021
(1 row)
La condition de la plage comprend les valeurs de début et de fin.
select min(dateid), max(dateid) from sales
where dateid between 1900 and 1910;
min | max
-----+-----
1900 | 1910
La première expression d’une condition de plage doit être la valeur inférieure et la deuxième expression la valeur supérieure. L’exemple suivant retourne toujours zéro ligne en raison des valeurs des expressions :
select count(*) from sales
where qtysold between 4 and 2;
count
-------
0
(1 row)
Cependant, l’application du modificateur NOT inverse la logique et génère le nombre de toutes les lignes :
select count(*) from sales
where qtysold not between 4 and 2;
count
--------
172456
(1 row)
La requête suivante retourne une liste des salles avec 20 000 à 50 000 places :
select venueid, venuename, venueseats from venue
where venueseats between 20000 and 50000
order by venueseats desc;
venueid | venuename | venueseats
---------+-------------------------------+------------
116 | Busch Stadium | 49660
106 | Rangers BallPark in Arlington | 49115
96 | Oriole Park at Camden Yards | 48876
...
(22 rows)
L’exemple suivant illustre l’utilisation de BETWEEN pour les valeurs de date :
select salesid, qtysold, pricepaid, commission, saletime
from sales
where eventid between 1000 and 2000
and saletime between '2008-01-01' and '2008-01-03'
order by saletime asc;
salesid | qtysold | pricepaid | commission | saletime
--------+---------+-----------+------------+---------------
65082 | 4 | 472 | 70.8 | 1/1/2008 06:06
110917 | 1 | 337 | 50.55 | 1/1/2008 07:05
112103 | 1 | 241 | 36.15 | 1/2/2008 03:15
137882 | 3 | 1473 | 220.95 | 1/2/2008 05:18
40331 | 2 | 58 | 8.7 | 1/2/2008 05:57
110918 | 3 | 1011 | 151.65 | 1/2/2008 07:17
96274 | 1 | 104 | 15.6 | 1/2/2008 07:18
150499 | 3 | 135 | 20.25 | 1/2/2008 07:20
68413 | 2 | 158 | 23.7 | 1/2/2008 08:12
Notez que même si la plage de BETWEEN est inclusive, les dates ont par défaut une valeur horaire de 00:00:00. La seule ligne valide du 3 janvier pour l’exemple de requête serait une ligne dont saletime est 1/3/2008 00:00:00
.