Megosztás a következőn keresztül:


KÖZÖTT (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Egy tesztelni kívánt tartományt határoz meg.

Transact-SQL szintaxis konvenciói

Syntax

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

Arguments

test_expression

A begin_expressionés end_expressionáltal meghatározott tartományban tesztelendő kifejezés. test_expression adattípusnak meg kell egyeznie begin_expression és end_expressionadattípusával.

NOT

Megadja, hogy a predikátum eredménye negated legyen.

begin_expression

Bármilyen érvényes kifejezés. begin_expression adattípusának meg kell egyeznie test_expression és end_expression.

end_expression

Bármilyen érvényes kifejezés. end_expression adattípusnak meg kell egyeznie test_expressionés begin_expressionadattípusával.

AND

Helyőrzőként működik, amely azt jelzi, hogy test_expression a begin_expression és end_expressionáltal megadott tartományon belül kell lennie.

Visszatérési típusok

Boolean

Remarks

BETWEEN TRUE ad vissza, ha a test_expression értéke nagyobb vagy egyenlő az begin_expression értékénél, és kisebb vagy egyenlő a end_expressionértékével .

NOT BETWEEN TRUE ad vissza, ha a test_expression értéke kisebb, mint a begin_expression vagy nagyobb, mint a end_expressionértéke.

Kizárólagos tartomány megadásához használja a nagyobbat (>) és a kisebbet, mint az operátorok (<). Ha a BETWEEN vagy NOT BETWEEN predikátum bármely bemenete NULL, az eredmény az összetevők eredményeitől függ.

Az alábbi példában test_expression >= begin_expression AND test_expression <= end_expression, ha bármelyik rész FALSE, akkor a teljes BETWEEN kifejezés kiértékelése FALSE. Ellenkező esetben a kifejezés kiértékelése UNKNOWN.

Examples

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

A. Használat BETWEEN

Az alábbi példa az adatbázis-szerepkörök adatait adja vissza. Az első lekérdezés az összes szerepkört visszaadja. A második példa a BETWEEN záradékkal korlátozza a szerepköröket a megadott database_id értékekre.

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

Itt van az eredményhalmaz.

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

Itt van az eredményhalmaz.

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

B. > és < használata a BETWEEN helyett

Az alábbi példa nagyobb(>) és kisebb(<) operátorokat használ, és mivel ezek az operátorok nem teljesek, az előző példában visszaadott 10 helyett kilenc sort ad vissza.

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

Itt van az eredményhalmaz.

 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. A NOT BETWEEN használata

Az alábbi példa megkeresi a megadott 27 tartományon kívüli összes sort 30.

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. A BETWEEN használata dátum/idő értékekkel

Az alábbi példa beolvassa azokat a sorokat, amelyekben dátum/idő értékek 20011212 és 20020105közé tartoznak, beleértve azokat is.

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

Itt van az eredményhalmaz.

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

A lekérdezés lekéri a várt sorokat, mert a lekérdezés dátumértékei és a dátum/időRateChangeDate oszlopban tárolt értékek a dátum időrésze nélkül vannak megadva. Ha az időrész nincs meghatározva, az alapértelmezés szerint 12:00 lesz. A lekérdezés nem adja vissza azt a sort, amely 2002. január 5-én 12:00 óra után egy időrészt tartalmaz, mert az a tartományon kívül esik.