BETWEEN (Transact-SQL)
Aktualisiert: 14. April 2006
Gibt einen zu testenden Bereich an.
Transact-SQL-Syntaxkonventionen
Syntax
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
Argumente
- test_expression
Der Ausdruck, für den getestet werden soll, ob er innerhalb des durch begin_expressionund end_expression definierten Bereichs liegt, test_expression muss vom gleichen Datentyp wie begin_expression und end_expression sein.
- NOT
Gibt an, dass das Ergebnis des Prädikats negiert wird.
- begin_expression
Ein gültiger Ausdruck. begin_expression muss vom gleichen Datentyp wie test_expression und end_expression sein.
- end_expression
Ein gültiger Ausdruck. end_expression muss vom gleichen Datentyp wie test_expression und begin_expression sein.
- AND
Dient als Platzhalter, der anzeigt, dass sich test_expression in dem durch begin_expression und end_expression angezeigten Bereich befinden soll.
Hinweise
Verwenden Sie die Operatoren Größer-als (>) und Kleiner-als (<), um einen Exklusivbereich anzugeben. Ist einer der Eingabewerte für das BETWEEN- oder NOT BETWEEN-Prädikat NULL, lautet das Ergebnis UNKNOWN.
Ergebnistypen
Boolean
Ergebniswert
BETWEEN gibt TRUE zurück, wenn der Wert von test_expression größer oder gleich dem Wert von begin_expression und kleiner oder gleich dem Wert von end_expression ist.
NOT BETWEEN gibt TRUE zurück, wenn der Wert von test_expression kleiner als der Wert von begin_expression oder größer als der Wert von end_expression ist.
Beispiele
A. Verwenden von BETWEEN
Im folgenden Beispiel werden die Angestellten von Adventure Works Cycles zurückgegeben, deren Stundensatz zwischen 27
und 30
liegt.
USE AdventureWorks;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e
JOIN HumanResources.EmployeePayHistory ep
ON e.EmployeeID = ep.EmployeeID
WHERE ep.Rate BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO
Dies ist das Resultset.
FirstName LastName Rate
----------- ------------------ ------------------
Paula Barreto de Mattos 27.1394
Janaina Bueno 27.4038
Dan Bacon 27.4038
Ramesh Meyyappan 27.4038
Karen Berg 27.4038
David Bradley 28.7500
Hazem Abolrous 28.8462
Ovidiu Cracium 28.8462
Rob Walters 29.8462
Sheela Word 30.0000
(10 row(s) affected)
B. Verwenden von > und < anstelle von BETWEEN
Im folgenden Beispiel werden die Operatoren Größer-als (>
) und Kleiner-als (<
) verwendet. Da diese Operatoren die Bereichsgrenzen nicht einschließen, werden im Unterschied zu den zehn Zeilen des vorherigen Beispiels nur neun Zeilen zurückgegeben.
USE AdventureWorks;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e
JOIN HumanResources.EmployeePayHistory ep
ON e.EmployeeID = ep.EmployeeID
WHERE ep.Rate > 27 AND ep.Rate < 30
ORDER BY ep.Rate;
GO
Dies ist das Resultset.
FirstName LastName Rate
--------- ------------------- ---------
Paula Barreto de Mattos 27.1394
Janaina Bueno 27.4038
Dan Bacon 27.4038
Ramesh Meyyappan 27.4038
Karen Berg 27.4038
David Bradley 28.7500
Hazem Abolrous 28.8462
Ovidiu Cracium 28.8462
Rob Walters 29.8462
(9 row(s) affected)
C. Verwenden von NOT BETWEEN
Im folgenden Beispiel werden alle Zeilen gesucht, die außerhalb des angegebenen Bereiches von 27
bis 30
liegen.
USE AdventureWorks;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e
JOIN HumanResources.EmployeePayHistory ep
ON e.EmployeeID = ep.EmployeeID
WHERE ep.Rate NOT BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO
D. Verwenden von BETWEEN mit datetime-Werten
Im folgenden Beispiel werden Zeilen abgerufen, die datetime-Werte zwischen '19971212'
und '19980105'
(inklusiv) enthalten.
USE AdventureWorks
GO
SELECT EmployeeID, RateChangeDate
FROM HumanResources.EmployeePayHistory
WHERE RateChangeDate BETWEEN '19971212' AND '19980105'
Dies ist das Resultset.
EmployeeID RateChangeDate
----------- -----------------------
3 1997-12-12 00:00:00.000
4 1998-01-05 00:00:00.000
Durch die Abfrage werden die erwarteten Zeilen abgerufen, da die Datumswerte in der Abfrage und die datetime-Werte in der RateChangeDate
-Spalte ohne den Zeitteil des Datums angegeben wurden. Wenn der Zeitteil nicht angegeben wird, wird standardmäßig 0:00 Uhr verwendet. Eine Zeile, die einen Zeitteil nach 0:00 Uhr am Datum 1998-01-05 enthält, würde von dieser Abfrage nicht zurückgegeben, da sie außerhalb des Bereichs liegt.
Siehe auch
Verweis
> (Größer als) (Transact-SQL)
< (Kleiner als) (Transact-SQL)
Ausdrücke (Transact-SQL)
Funktionen (Transact-SQL)
Operatoren (Transact-SQL)
SELECT (Transact-SQL)
WHERE (Transact-SQL)
Andere Ressourcen
Logische Operatoren
Grundlegende Informationen zu Unterabfragen
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
14. April 2006 |
|