POMIĘDZY (Transact-SQL)
Określa zakres do testowania.
Składnia
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
Argumenty
test_expression
Jest wyrażenie do testowania w zakres określonych przez begin_expressioni end_expression.test_expressionmuszą być tego samego typu danych jako begin_expression i end_expression.NIE
Określa, że wynik orzeczenie być zanegowane.begin_expression
To dowolne prawidłowe wyrażenie.begin_expressionmuszą być tego samego typu danych jako test_expression i end_expression.end_expression
To dowolne prawidłowe wyrażenie.end_expressionmuszą być tego samego typu danych jako test_expressioni begin_expression.ORAZ
Działa jako symbol zastępczy, który wskazuje test_expression powinny być w zakres wskazane przez begin_expression i end_expression.
Typy wyników
Boolean
Wartość wyniku
MIĘDZY zwraca TRUE Jeśli wartość test_expression jest większa niż lub równa wartości z begin_expression i mniejsza lub równa wartości end_expression.
NIE między zwraca TRUE Jeśli wartość test_expression jest mniejsza niż wartość begin_expression lub większa niż wartość end_expression.
Uwagi
Wyłączne zakres, użyć większy niż (>) i mniejszą niż operatorów (<).Jeśli dane wejściowe BETWEEN lub nie predykat BETWEEN jest NULL, wynik jest nieznany.
Przykłady
A.Za pomocą BETWEEN
Poniższy przykład zwraca pracowników Adventure Works Cycles mają stawki godzinowej płac między 27 i 30.
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
Oto zestaw wyników.
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.Za pomocą > i < zamiast BETWEEN
W poniższym przykładzie użyto większe niż (>) i mniej niż (<) podmioty gospodarcze i ponieważ te podmioty gospodarcze nie są włącznie, zwraca dziewięciu wierszy zamiast 10, które zostały zwrócone w poprzednim przykładzie.
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
Oto zestaw wyników.
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.Za pomocą nie pomiędzy
Następujący przykład wyszukuje wszystkie wiersze poza określony zakres 27 przez 30.
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.Za pomocą między wartościami datetime
Poniższy przykład pobiera wiersze, w którym datetime są wartości z przedziału '19971212' i '19980105', włącznie.
USE AdventureWorks2008R2;
GO
SELECT BusinessEntityID, RateChangeDate
FROM HumanResources.EmployeePayHistory
WHERE RateChangeDate BETWEEN '20011212' AND '20020105'
Oto zestaw wyników.
BusinessEntityID RateChangeDate
----------- -----------------------
3 2001-12-12 00:00:00.000
4 2002-01-05 00:00:00.000
Kwerenda pobiera oczekiwanych wierszy, ponieważ data wartości w kwerendzie i datetime wartości przechowywanych w RateChangeDate kolumna zostały określone bez czas część data.Gdy część czas jest określony, domyślnie od 12:00Uwaga wiersz, który zawiera czas część, która jest po 24:00w 1998 r.-0105 nie zostałaby zwrócona przez tę kwerendę, ponieważ znajduje się poza zakres.