Freigeben über


BETWEEN (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Analyseendpunkt in Microsoft FabricWarehouse in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Gibt einen zu testenden Bereich an.

Transact-SQL-Syntaxkonventionen

Syntax

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

Argumente

test_expression

Der Ausdruck, auf den im durch begin_expressionund end_expressiondefinierten Bereich zu testen ist. muss test_expression denselben Datentyp wie begin_expression und end_expression aufweisen.

NICHT

Gibt an, dass das Ergebnis des Prädikats negiert wird.

begin_expression

Ein beliebiger gültiger Ausdruck. begin_expression muss denselben Datentyp wie test_expression und end_expression aufweisen.

end_expression

Ein beliebiger gültiger Ausdruck. end_expression muss denselben Datentyp wie test_expression und begin_expression aufweisen.

UND

Fungiert als Platzhalter, der angibt, dass sich test_expression innerhalb des von begin_expression und end_expression angegebenen Bereichs befinden sollte.

Rückgabetypen

Boolescher Wert

Bemerkungen

BETWEEN gibt TRUE zurück, wenn der Wert von test_expression größer oder gleich dem Wert von begin_expression und kleiner als oder gleich dem Wert von end_expressionist.

NOT BETWEEN gibt TRUE zurück, wenn der Wert von test_expression kleiner als der Wert begin_expression oder größer als der Wert von end_expressionist.

Verwenden Sie die Operatoren Größer-als (>) und Kleiner-als (<), um einen Exklusivbereich anzugeben. Wenn ein Eingaben für das BETWEEN oder NOT BETWEEN Prädikat NULList, hängt das Ergebnis von den Ergebnissen der Bestandteile ab.

Im folgenden Beispiel test_expression >= begin_expression AND test_expression <= end_expression, wenn ein Teil FALSE ist, wird der gesamte BETWEEN Ausdruck als FALSEausgewertet. Andernfalls wird der Ausdruck als UNKNOWNausgewertet.

Beispiele

Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2022- oder AdventureWorksDW2022 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.

A. Verwenden von BETWEEN

Im folgenden Beispiel werden Informationen zu den Datenbankgruppen in einer Datenbank zurückgegeben. Die erste Abfrage gibt alle Rollen zurück. Im zweiten Beispiel werden die Rollen mithilfe der BETWEEN-Klausel auf die angegebenen database_id Werte beschränkt.

SELECT principal_id,
       name
FROM sys.database_principals
WHERE type = 'R';

Hier sehen Sie das Ergebnis.

principal_id name
------------  ----
0             public
16384         db_owner
16385         db_accessadmin
16386         db_securityadmin
16387         db_ddladmin
16389         db_backupoperator
16390         db_datareader
16391         db_datawriter
16392         db_denydatareader
16393         db_denydatawriter
SELECT principal_id,
       name
FROM sys.database_principals
WHERE type = 'R'
      AND principal_id BETWEEN 16385 AND 16390;
GO

Hier sehen Sie das Ergebnis.

principal_id name
------------  ----
16385         db_accessadmin
16386         db_securityadmin
16387         db_ddladmin
16389         db_backupoperator
16390         db_datareader

B. Verwenden von > und < anstelle von BETWEEN

Im folgenden Beispiel werden operatoren größer als (>) und kleiner als (<) verwendet. Da diese Operatoren nicht einschließlich sind, werden neun Zeilen anstelle von 10 zurückgegeben, die im vorherigen Beispiel zurückgegeben wurden.

SELECT e.FirstName,
       e.LastName,
       ep.Rate
FROM HumanResources.vEmployee AS e
     INNER JOIN HumanResources.EmployeePayHistory AS ep
         ON e.BusinessEntityID = ep.BusinessEntityID
WHERE ep.Rate > 27
      AND ep.Rate < 30
ORDER BY ep.Rate;
GO

Hier sehen Sie das Ergebnis.

 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

C. NICHT ZWISCHEN VERWENDEN

Im folgenden Beispiel werden alle Zeilen gesucht, die außerhalb des angegebenen Bereiches von 27 bis 30 liegen.

SELECT e.FirstName,
       e.LastName,
       ep.Rate
FROM HumanResources.vEmployee AS e
     INNER JOIN HumanResources.EmployeePayHistory AS ep
         ON e.BusinessEntityID = ep.BusinessEntityID
WHERE ep.Rate NOT BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO

D: Verwenden von BETWEEN mit Datums-/Uhrzeitwerten

Im folgenden Beispiel werden Zeilen abgerufen, die datetime-Werte zwischen 20011212 und 20020105 (inklusiv) enthalten.

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

Hier sehen Sie das Ergebnis.

BusinessEntityID RateChangeDate
----------- -----------------------
3           2001-12-12 00:00:00.000
4           2002-01-05 00:00:00.000

Die Abfrage ruft die erwarteten Zeilen ab, da die Datumswerte in der Abfrage und die in der RateChangeDate Spalte gespeicherten datumstime- Werte ohne den Zeitteil des Datums angegeben werden. Wenn der Zeitteil nicht angegeben ist, wird er standardmäßig auf 12:00 Uhr festgelegt. Eine Zeile, die einen Zeitteil enthält, der am 5. Januar 2002 nach 12:00 Uhr liegt, wird von dieser Abfrage nicht zurückgegeben, da sie außerhalb des Bereichs liegt.