Udostępnij za pośrednictwem


POMIĘDZY (Transact-SQL)

Określa zakres do testowania.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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.