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