Freigeben über


BETWEEN (Transact-SQL)

Gibt einen zu testenden Bereich an.

Themenlink (Symbol)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.

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.

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.

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 AdventureWorks2008R2;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e 
JOIN HumanResources.EmployeePayHistory ep 
    ON e.BusinessEntityID = ep.BusinessEntityID
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

Karen Berg 27.4038

Ramesh Meyyappan 27.4038

Dan Bacon 27.4038

Janaina Bueno 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 AdventureWorks2008R2;
GO

SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e 
JOIN HumanResources.EmployeePayHistory ep 
    ON e.BusinessEntityID = ep.BusinessEntityID
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 Bereichs von 27 bis 30 liegen.

USE AdventureWorks2008R2;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e 
JOIN HumanResources.EmployeePayHistory ep 
    ON e.BusinessEntityID = ep.BusinessEntityID
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' (einschließlich) enthalten.

USE AdventureWorks2008R2;
GO
SELECT BusinessEntityID, RateChangeDate
FROM HumanResources.EmployeePayHistory
WHERE RateChangeDate BETWEEN '20011212' AND '20020105'

Dies ist das Resultset.

BusinessEntityID RateChangeDate

----------- -----------------------

3 2001-12-12 00:00:00.000

4 2002-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 späteren Zeitteil als 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.