SQL-Abfrage: Wertebereiche eingrenzen mit dem Schlüsselwort „BETWEEN“

Das Schlüsselwort BETWEEN in SQL: Einfach erklärt

SQL (Structured Query Language) ist eine Sprache, die verwendet wird, um Datenbanken zu verwalten und Informationen aus ihnen abzurufen. Wenn du mit SQL arbeitest, wirst du auf ein nützliches Schlüsselwort stoßen, das „BETWEEN“ heißt. Es hilft dir, Daten innerhalb eines bestimmten Bereichs zu filtern. Aber keine Sorge, wir werden alles Schritt für Schritt und so einfach wie möglich erklären!


Was bedeutet BETWEEN?

Das Schlüsselwort BETWEEN wird verwendet, wenn man Werte aus einer Tabelle suchen möchte, die sich zwischen zwei Grenzen befinden, z. B. ein „Startwert“ und ein „Endwert“. Das kann helfen, ziemlich genau nach den gewünschten Daten zu filtern.

In einfacher Sprache:

  • Du sagst der Datenbank: „Zeig mir alle Werte, die größer oder gleich meinem ersten Wert (Startwert) und kleiner oder gleich meinem zweiten Wert (Endwert) sind.“

Wie funktioniert BETWEEN?

BETWEEN funktioniert mit Zahlen, Text (Buchstaben) oder auch Datumsangaben. Es sieht so aus:

SELECT * FROM tabelle
WHERE spalte BETWEEN startwert AND endwert;
  • spalte: Die Spalte in der Tabelle, die du filtern möchtest.
  • startwert: Der kleinste Wert, den du einschließen willst.
  • endwert: Der größte Wert, den du einschließen willst.

Beispiel 1: Zahlenbereich

Angenommen, wir haben eine Tabelle mit dem Namen personen, die folgende Daten enthält:

idnamealter
1Anna25
2Ben30
3Chris35
4Dana40
5Elias45

Wenn du alle Personen sehen möchtest, die zwischen 30 und 40 Jahre alt sind (einschließlich 30 und 40), schreibst du:

SELECT * FROM personen
WHERE alter BETWEEN 30 AND 40;

Das Ergebnis wäre:

idnamealter
2Ben30
3Chris35
4Dana40

Wie du siehst, hat BETWEEN die Werte 30 und 40 mit eingeschlossen. Das ist wichtig zu wissen: BETWEEN schließt den Anfangs- und Endwert standardmäßig mit ein.


Beispiel 2: Textbereich (Buchstaben)

BETWEEN funktioniert auch mit Text. Beim Vergleich von Text sieht SQL die Buchstaben in alphabetischer Reihenfolge (A vor B, B vor C usw.).

Angenommen, wir haben eine Tabelle produkte mit diesen Daten:

idproduktname
1Apfel
2Banane
3Kirsche
4Litschi
5Mango

Wenn du nach Produkten suchst, deren Namen alphabetisch zwischen „Banane“ und „Litschi“ liegen, schreibst du:

SELECT * FROM produkte
WHERE produktname BETWEEN 'Banane' AND 'Litschi';

Das Ergebnis wäre:

idproduktname
2Banane
3Kirsche
4Litschi

Auch hier gilt: Übereinstimmende Anfangs- und Endwerte sind enthalten.


Wichtiger Sonderfall: Ist der Endwert wirklich enthalten?

In SQL wird der Endwert beim Vergleich normalerweise eingeschlossen (wie in den obigen Beispielen). Aber wenn es um Buchstaben (Text) geht, treten manchmal Missverständnisse auf.

Beispiel: Warum wird „Litschi“ nicht immer einbezogen?

Angenommen, du benutzt:

SELECT * FROM produkte
WHERE produktname BETWEEN 'K' AND 'L';

Man könnte erwarten, dass „Litschi“ hier enthalten ist. Aber „Litschi“ wird nicht einbezogen, weil SQL den gesamten Text selbst vergleicht, Buchstabe für Buchstabe.

SQL versteht „L“ als alle Wörter, die genau mit „L“ beginnen und keinen zusätzlichen Buchstaben danach haben. Das heißt, „Litschi“ liegt außerhalb des Bereichs, weil es nach „L“ noch weitere Buchstaben hat („it…“).


Wie kann man dafür sorgen, dass der Endwert einbezogen wird?

Wenn du sicherstellen möchtest, dass auch z. B. „Litschi“ eingeschlossen wird, kannst du den Endwert erweitern. Du kannst das machen, indem du nach „Lz“ suchst oder einen ähnlichen Wert, der garantiert weiter hinten im Alphabet liegt:

SELECT * FROM produkte
WHERE produktname BETWEEN 'K' AND 'Lz';

Damit würde auch „Litschi“ enthalten sein, weil „z“ im Alphabet nach „i“ kommt und somit alle Wörter mit „L“ und weiteren Buchstaben abdeckt. Achte darauf, den Bereich so festzulegen, dass dein gewünschter Endwert auch wirklich enthalten ist.


BETWEEN mit Datumsangaben

BETWEEN funktioniert auch mit Datumsangaben. Hier ein Beispiel mit einer Tabelle bestellungen:

idkundebestelldatum
1Anna2023-01-01
2Ben2023-03-15
3Chris2023-06-10
4Dana2023-09-05
5Elias2023-12-20

Um alle Bestellungen zwischen dem 1. Januar und dem 30. Juni 2023 zu sehen, schreibst du:

SELECT * FROM bestellungen
WHERE bestelldatum BETWEEN '2023-01-01' AND '2023-06-30';

Das Ergebnis:

idkundebestelldatum
1Anna2023-01-01
2Ben2023-03-15
3Chris2023-06-10

Hier gilt natürlich wieder: Anfangs- und Enddatum werden standardmäßig eingeschlossen.


Fazit

  • BETWEEN ist ein sehr praktisches Werkzeug in SQL, wenn du Werte in einem bestimmten Bereich filtern willst.
  • Es schließt sowohl den Start- als auch den Endwert mit ein.
  • Achte bei Texten darauf, dass SQL jedes Zeichen Buchstabe für Buchstabe vergleicht – das kann manchmal zu unerwarteten Ergebnissen führen.
  • Du kannst den Endwert erweitern, wenn etwas, das du erwartet hast, außerhalb des Bereichs liegt (z. B. durch Hinzufügen von „z“ bei Texten).