Der SQL BETWEEN Operator
Der SQL BETWEEN Operator wird zusammen mit der WHERE-Klausel verwendet, um einen Wertebereich anzugeben. Die Werte können numerische Werte, Textwerte und Datumsangaben sein. Der SQL BETWEEN Operator ähnelt fast den SQL IN Operatoren, die in sequenzieller Weise verwendet werden. Die Werte, die als Teil des BETWEEN-Bereichs definiert sind, sind inklusiv, d.h. die im Bereich angegebenen Werte sind sowohl als Start- als auch als Endwerte eingeschlossen. Lassen Sie uns im Detail über den BETWEEN-Operator sprechen. Wie oben erwähnt, kann der BETWEEN-Operator zusammen mit numerischen Werten, Textwerten und Datumsangaben verwendet werden. Wir werden alle drei im Folgenden detailliert besprechen.
SQL Between Syntax
SELECT Spalte(n) FROM Tabellenname WHERE Spalte BETWEEN Wert1 UND Wert2;
Mit der oben genannten Syntax können wir Werte als Teil des BETWEEN-Operators definieren. Außerdem bleibt die oben genannte Syntax gleich, unabhängig davon, ob sie mit einem numerischen Wert, Textwert oder Datumsangabe verwendet wird.
SQL BETWEEN Operator für numerische Werte
Wir werden die oben genannte Syntax anhand einiger Beispiele für numerische Werte genauer verstehen. Betrachten wir dazu die folgende Schülertabelle als Beispiel.
RollNr | SchülerName | SchülerGeschlecht | SchülerAlter | SchülerProzent | Aufnahmedatum |
---|---|---|---|---|---|
1 | George | M | 14 | 85 | 2018-01-01 |
2 | Monica | F | 12 | 88 | 2018-01-31 |
3 | Jessica | F | 13 | 84 | 2018-01-15 |
4 | Tom | M | 11 | 78 | 2017-12-15 |
Ich verwende die MySQL-Datenbank und hier ist das Skript, um die Beispiel-Datensätze in der Schülertabelle zu erstellen und einzufügen.
CREATE TABLE `Schüler` (
`rollnr` int(11) unsigned NOT NULL,
`schülername` varchar(20) DEFAULT NULL,
`schülergeschlecht` varchar(5) DEFAULT NULL,
`schüleralter` int(3) DEFAULT NULL,
`schülerprozent` int(3) DEFAULT NULL,
`aufnahmedatum` date DEFAULT NULL,
PRIMARY KEY (`rollnr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `Schüler` (`rollnr`, `schülername`, `schülergeschlecht`, `schüleralter`, `schülerprozent`, `aufnahmedatum`)
VALUES
(1, 'George', 'M', 14, 85, '2018-01-01'),
(2, 'Monica', 'F', 12, 88, '2018-01-31'),
(3, 'Jessica', 'F', 13, 84, '2018-01-15'),
(4, 'Tom', 'M', 11, 78, '2017-12-15');
Szenario: Ermitteln Sie den Prozentsatz der Schüler, deren Alter zwischen 11 und 13 liegt.
SELECT SchülerProzent FROM Schüler WHERE SchülerAlter BETWEEN 11 UND 13;
Ausgabe:
SchülerProzent
88
84
78
Beispiel für die SQL Between-Klausel
SQL NOT BETWEEN Operator für numerische Werte
Der SQL NOT BETWEEN Operator wird verwendet, um die Werte als Teil des Ergebnissets zu erhalten, die außerhalb des durch den BETWEEN-Operator angegebenen Bereichs liegen. Szenario: Ermitteln Sie den Prozentsatz der Schüler, deren Alter nicht zwischen 11 und 13 liegt.
SELECT SchülerProzent FROM Schüler WHERE SchülerAlter NOT BETWEEN 11 UND 13;
Ausgabe:
SchülerProzent
85
sql not between Beispiel
SQL BETWEEN Operator für Textwerte
Szenario: Ermitteln Sie die RollNr, SchülerName und SchülerAlter, bei denen SchülerName zwischen George und Jessica liegt.
SELECT RollNr, SchülerName, SchülerAlter FROM Schüler WHERE SchülerName BETWEEN ‚George‘ UND ‚Jessica‘;
Ausgabe:
RollNr | SchülerName | SchülerAlter |
---|---|---|
1 | George | 14 |
3 | Jessica | 13 |
SQL NOT BETWEEN Operator für Textwerte
Szenario: Ermitteln Sie die RollNr, SchülerName und SchülerAlter, bei denen SchülerName nicht zwischen George und Jessica liegt.
SELECT RollNr, SchülerName, SchülerAlter FROM Schüler WHERE SchülerName NOT BETWEEN ‚George‘ UND ‚Jessica‘;
Ausgabe:
RollNr | SchülerName | SchülerAlter |
---|---|---|
2 | Monica | 12 |
4 | Tom | 11 |
SQL BETWEEN Operator für Datumsangaben
Szenario: Ermitteln Sie das Alter der Schüler, deren Aufnahme zwischen dem 1. Januar 2018 und dem 31. Januar 2018 liegt.
SELECT SchülerAlter FROM Schüler WHERE aufnahmedatum BETWEEN str_to_date(‚2018-01-01‘, ‚%Y-%m-%d‘) UND ‚2018-01-31‘;
Ausgabe:
SchülerAlter
14
12
13
Beachten Sie, dass ich die native MySQL-Funktion str_to_date verwende, um die Zeichenkette in ein Datum umzuwandeln. Wenn die Zeichenkette im Standardformat vorliegt, können wir sie auch so verwenden, wie ich es für das zweite Argument getan habe. Wenn Sie Oracle DB verwenden, entspricht die entsprechende Funktion TO_DATE.
SQL Between Date Beispiel
SQL NOT BETWEEN Operator für Datumsangaben
Szenario: Ermitteln Sie das Alter der Schüler, deren Aufnahme nicht zwischen dem 1. Januar 2018 und dem 31. Januar 2018 liegt.
SELECT SchülerAlter FROM Schüler WHERE aufnahmedatum NOT BETWEEN str_to_date(‚2018-01-01‘, ‚%Y-%m-%d‘) UND ‚2018-01-31‘;
Ausgabe:
SchülerAlter
11
MULTIPLE BETWEEN Operatoren
Wir können auch mehrere BETWEEN-Operatoren verwenden. Die Syntax lautet:
SELECT Spalte(n) FROM Tabellenname WHERE
spaltenname BETWEEN Wert1 UND Wert2
UND
spaltenname BETWEEN Wert3 und Wert4
...
UND
BETWEEN spaltenname BETWEEN WertN und WertM;
Mit der oben genannten Syntax können wir mehrere BETWEEN-Operatoren verwenden. Szenario: Ermitteln Sie den Schülernamen mit einem Alter zwischen 10 und 13 und Noten zwischen 80 und 85 Prozent.
SELECT SchülerName FROM Schüler WHERE
SchülerAlter BETWEEN 10 UND 13
UND
SchülerProzent BETWEEN 80 UND 85;
Ausgabe:
SchülerName
Jessica