- Catégories :
[ NOT ] BETWEEN¶
Renvoie TRUE
lorsque l’expression d’entrée (numérique ou chaîne) se trouve dans les limites inférieure et supérieure spécifiées.
Syntaxe¶
<expr> [ NOT ] BETWEEN <lower_bound> AND <upper_bound>
Arguments¶
expr
L’expression d’entrée.
lower_bound
La limite inférieure.
upper_bound
La limite supérieure.
Renvoie¶
La fonction renvoie une valeur de type BOOLEAN.
Notes sur l’utilisation¶
expr BETWEEN lower_bound AND upper_bound
équivaut àexpr >= lower_bound AND expr <= upper_bound
.La limite supérieure spécifiée doit être supérieure à la limite inférieure.
Les types de données des valeurs des arguments doivent être identiques ou compatibles.
Si la fonction convertit implicitement une valeur en un autre type de données, elle peut renvoyer des résultats inattendus.
Par exemple, lorsque
expr
est une valeur TIMESTAMP et que les valeurslower_bound
etupper_bound
sont des valeurs DATE, les valeurs DATE sont implicitement converties en valeurs TIMESTAMP et l’heure est définie sur00:00:00
. Pour la clause WHERE suivante, supposez quetimestamp_column
est une colonne de type TIMESTAMP dans une table :WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-04-31'
Lorsque les valeurs de DATE sont implicitement converties, la clause WHERE est interprétée comme suit :
WHERE timestamp_column BETWEEN '2025-04-30 00:00:00' AND '2025-04-31 00:00:00'
Avec cette clause WHERE, la fonction renvoie
FALSE
pour pratiquement toutes les valeurs detimestamp_column
le 31-04-2025, ce qui n’est peut-être pas voulu. Pour éviter ce problème spécifique, vous pouvez spécifier le jour suivant pourupper_bound
lorsque vous appelez la fonction :WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-05-01'
Détails du classement¶
L’expression A BETWEEN X AND Y
équivaut à A >= X AND A <= Y
. Les classements utilisés pour comparer X
et Y
sont indépendants et n’ont pas besoin d’être identiques, mais ils doivent tous deux être compatibles avec le classement de A
.
Exemples¶
Voici quelques exemples simples d’utilisation de BETWEEN avec des valeurs numériques et des valeurs de chaîne :
SELECT 'true' WHERE 1 BETWEEN 0 AND 10;
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
SELECT 'true' WHERE 1.35 BETWEEN 1 AND 2;
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
SELECT 'true' WHERE 'the' BETWEEN 'that' AND 'then';
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
Les exemples suivants utilisent COLLATE avec BETWEEN :
SELECT 'm' BETWEEN COLLATE('A', 'lower') AND COLLATE('Z', 'lower');
+-------------------------------------------------------------+
| 'M' BETWEEN COLLATE('A', 'LOWER') AND COLLATE('Z', 'LOWER') |
|-------------------------------------------------------------|
| True |
+-------------------------------------------------------------+
SELECT COLLATE('m', 'upper') BETWEEN 'A' AND 'Z';
+-------------------------------------------+
| COLLATE('M', 'UPPER') BETWEEN 'A' AND 'Z' |
|-------------------------------------------|
| True |
+-------------------------------------------+