- Kategorien:
[ 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>
Argumente¶
exprDer Eingabeausdruck.
lower_boundDie untere Grenze.
upper_boundDie obere Grenze.
Rückgabewerte¶
Die Funktion gibt einen Wert vom Typ BOOLEAN zurück.
Nutzungshinweise¶
expr BETWEEN lower_bound AND upper_boundist äquivalent zuexpr >= lower_bound AND expr <= upper_bound.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
exprein TIMESTAMP-Wert ist und dielower_bound- undupper_bound-Werte DATE-Werte sind, werden die DATE-Werte implizit in TIMESTAMP-Werte umgewandelt und die Zeit wird auf00:00:00gesetzt. Für die folgende WHERE-Klausel nehmen Sie an, dasstimestamp_columneine Spalte vom Typ TIMESTAMP in einer Tabelle ist:WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-04-31'
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'
Mit dieser WHERE-Klausel gibt die Funktion für praktisch alle
timestamp_column-Werte am 2025-04-31FALSEzurück, was vielleicht nicht beabsichtigt ist. Um dieses Problem zu vermeiden, können Sie den nächsten Tag fürupper_boundangeben, wenn Sie die Funktion aufrufen:WHERE timestamp_column BETWEEN '2025-04-30' AND '2025-05-01'
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;
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
SELECT 'true' WHERE 1.35 BETWEEN 1 AND 2;
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
SELECT 'true' WHERE 'the' BETWEEN 'that' AND 'then';
+--------+
| 'TRUE' |
|--------|
| true |
+--------+
Die folgenden Beispiele verwenden COLLATE mit 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 |
+-------------------------------------------+