Kategorien:

Funktionen für bedingte Ausdrücke

[ NOT ] BETWEEN

Gibt TRUE zurück, wenn sich der Eingabeausdruck (numerisch oder Zeichenfolge) innerhalb der angegebenen unteren und oberen Grenzen befindet.

Syntax

<expr> [ NOT ] BETWEEN <lower_bound> AND <upper_bound>
Copy

Argumente

expr

Der Eingabeausdruck.

lower_bound

Die untere Grenze.

upper_bound

Die obere Grenze.

Rückgabewerte

Die Funktion gibt einen Wert vom Typ BOOLEAN zurück.

Nutzungshinweise

  • expr BETWEEN lower_bound AND upper_bound ist äquivalent zu expr >= lower_bound AND expr <= upper_bound.

  • Die angegebene obere Grenze muss größer sein als die untere Grenze.

  • Die Datentypen der Argumentwerte müssen gleich oder kompatibel sein.

    Wenn die Funktion einen Wert implizit in einen anderen Datentyp umwandelt, kann sie unerwartete Ergebnisse liefern.

    Wenn zum Beispiel expr ein TIMESTAMP-Wert ist und die lower_bound- und upper_bound-Werte DATE-Werte sind, werden die DATE-Werte implizit in TIMESTAMP-Werte umgewandelt und die Zeit wird auf 00:00:00 gesetzt. Für die folgende WHERE-Klausel nehmen Sie an, dass timestamp_column eine Spalte vom Typ TIMESTAMP in einer Tabelle ist:

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

    Wenn die DATE-Werte implizit umgewandelt werden, wird die WHERE-Klausel wie folgt interpretiert:

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

    Mit dieser WHERE-Klausel gibt die Funktion für praktisch alle timestamp_column-Werte am 2025-04-31 FALSE zurück, was vielleicht nicht beabsichtigt ist. Um dieses Problem zu vermeiden, können Sie den nächsten Tag für upper_bound angeben, wenn Sie die Funktion aufrufen:

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

Sortierungsdetails

Der Ausdruck A BETWEEN X AND Y ist äquivalent zu A >= X AND A <= Y. Die für den Vergleich mit X und Y verwendeten Sortierungen sind unabhängig und müssen nicht identisch sein, aber beide müssen mit der Sortierung von A kompatibel sein.

Beispiele

Hier sind einige einfache Beispiele für die Verwendung von BETWEEN mit Zahlen- und Zeichenfolgenwerten:

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   |
+--------+

Die folgenden Beispiele verwenden COLLATE mit 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                                      |
+-------------------------------------------+