Catégories :

Fonctions d’expressions conditionnelles

[ 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>
Copy

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 valeurs lower_bound et upper_bound sont des valeurs DATE, les valeurs DATE sont implicitement converties en valeurs TIMESTAMP et l’heure est définie sur 00:00:00. Pour la clause WHERE suivante, supposez que timestamp_column est une colonne de type TIMESTAMP dans une table :

    WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-04-31'
    
    Copy

    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'
    
    Copy

    Avec cette clause WHERE, la fonction renvoie FALSE pour pratiquement toutes les valeurs de timestamp_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 pour upper_bound lorsque vous appelez la fonction :

    WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-05-01'
    
    Copy

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;
Copy
+--------+
| 'TRUE' |
|--------|
| true   |
+--------+
SELECT 'true' WHERE 1.35 BETWEEN 1 AND 2;
Copy
+--------+
| 'TRUE' |
|--------|
| true   |
+--------+
SELECT 'true' WHERE 'the' BETWEEN 'that' AND 'then';
Copy
+--------+
| 'TRUE' |
|--------|
| true   |
+--------+

Les exemples suivants utilisent COLLATE avec BETWEEN :

SELECT 'm' BETWEEN COLLATE('A', 'lower') AND COLLATE('Z', 'lower');
Copy
+-------------------------------------------------------------+
| 'M' BETWEEN COLLATE('A', 'LOWER') AND COLLATE('Z', 'LOWER') |
|-------------------------------------------------------------|
| True                                                        |
+-------------------------------------------------------------+
SELECT COLLATE('m', 'upper') BETWEEN 'A' AND 'Z';
Copy
+-------------------------------------------+
| COLLATE('M', 'UPPER') BETWEEN 'A' AND 'Z' |
|-------------------------------------------|
| True                                      |
+-------------------------------------------+