Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

BETWEEN-Prädikat (Bereichsabfrage)

Es wird bestimmt, ob eine Zeile in einem Bereich liegt, der durch eine obere und untere Grenze angegeben wird.


{ zeile_1 [NOT] BETWEEN zeile_2 AND zeile_3 |

    vektor_spalte [NOT] BETWEEN ausdruck AND ausdruck }

zeile ::= { (ausdruck ,...) | ausdruck | unterabfrage_2 }

vektor_spalte ::= [tabelle.] { spalte[min..max] | spalte(min..max) }



zeile

Jeder ausdruck in zeile muss einfach sein. Die Zeile besteht aus den Werten von ausdruck in der angegebenen Reihenfolge. Ein einzelner ausdruck liefert also eine Zeile mit einer Spalte.

unterabfrage muss eine Tabelle liefern, deren Spalten alle einfach sind, und die höchstens eine Zeile hat. Diese Zeile ist der Operand. Ist die gelieferte Tabelle leer, so besteht der Operand aus einer Zeile, deren Spalten alle den Wert NULL haben.

Die drei Zeilen müssen dieselbe Anzahl von Spalten haben, und korrespondierende Spalten müssen verträgliche Datentypen haben (siehe Abschnitt „Verträglichkeit von Datentypen").

vektor_spalte

Eine multiple Spalte mit besonderen Regeln für das Ergebnis. Die Spaltenangabe darf keine Außenreferenz sein.

ausdruck

Die Werte müssen einfach sein, und ihre Datentypen müssen mit dem Datentyp der Ausprägungen von vektor_spalte verträglich sein (siehe Abschnitt „Verträglichkeit von Datentypen").


Ergebnis


zeile_1 BETWEEN zeile_2 AND zeile_3 ist identisch mit:
(zeile_1 >= zeile_2) AND (zeile_1 <= zeile_3)


zeile_1 NOT BETWEEN zeile_2 AND zeile_3 ist identisch mit:
NOT (zeile_1 BETWEEN zeile_2 AND zeile_3)


vektor_spalte [NOT] BETWEEN ausdruck AND ausdruck

  • Die Bereichsabfrage wird für jede Ausprägung von vektor_spalte durchgeführt.

  • Die Einzelergebnisse werden mit OR verknüpft.

Beispiel

Wenn X eine multiple Spalte mit 3 Elementen ist, ist die Bereichsabfrage X[1..3] BETWEEN 13 AND 20 zu folgenden Bereichsabfragen äquivalent:

X[1] BETWEEN 13 AND 20 OR X[2] BETWEEN 13 AND 20 OR X[3] BETWEEN 13 AND 20


Beispiele


BETWEEN-Prädikat mit numerischem Bereich:

Aus der Tabelle ARTIKEL alle Artikel mit Artikelbezeichnung heraussuchen, deren Preis zwischen 0 und 10 Euro liegt.

SELECT artnr, artbez, preis FROM artikel
   WHERE preis BETWEEN 0.00 AND 10.00
artnr   artbez       preis
  210   V-Nabe        5.00
  220   H-Nabe        5.00
  230   Felge        10.00
  240   Speiche       1.00
  500   Schraube M5   1.10
  501   Mutter        0.75


BETWEEN-Prädikat mit einem Zeitintervall:

Aus der Tabelle AUFTRAG die Aufträge mit Auftragsnummer, Kundennummer, Auftragsdatum und Auftragstext heraussuchen, die im Dezember 2013 gestellt wurden:

SELECT anr, knr, atext, adatum FROM auftrag
   WHERE adatum BETWEEN DATE'2013-12-01' AND DATE'2013-12-31'
   anr  knr  atext                    adatum
   210  106  Kunden-Verwaltung        2013-12-13
   211  106  Datenbankentwurf KUNDEN  2013-12-30


BETWEEN-Prädikat mit Benutzervariable:

:MINIMUM ist eine Benutzervariable. Der Vergleich ist wahr, wenn das Produkt LSATZ*LANZ (Preis pro Leistungseinheit mal Anzahl der Leistungseinheiten) außerhalb des angegebenen Bereichs liegt. Er ist falsch, wenn das Produkt innerhalb des Bereichs liegt. Das Ergebnis ist unbestimmt, wenn der Wert von LSATZ oder LANZ unbestimmt ist.

lsatz*lanz NOT BETWEEN :MINIMUM AND 2000