- 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¶
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 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
expr
ein 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:00
gesetzt. Für die folgende WHERE-Klausel nehmen Sie an, dasstimestamp_column
eine 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-31FALSE
zurück, was vielleicht nicht beabsichtigt ist. Um dieses Problem zu vermeiden, können Sie den nächsten Tag fürupper_bound
angeben, 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 |
+-------------------------------------------+