Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-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.