BETWEEN(Transact-SQL)
테스트할 범위를 지정합니다.
- test_expression
-
begin_expression 및 end_expression으로 정의한 범위를 테스트하는 식입니다. test_expression은 begin_expression 및 end_expression과 동일한 데이터 형식이어야 합니다.
- NOT
-
조건자의 결과를 부정합니다.
- begin_expression
-
유효한 식입니다. begin_expression은 test_expression 및 end_expression과 동일한 데이터 형식이어야 합니다.
- end_expression
-
유효한 식입니다. end_expression은 test_expression 및 begin_expression과 동일한 데이터 형식이어야 합니다.
- AND
-
test_expression이 begin_expression과 end_expression이 나타내는 범위에 속해야 함을 나타내는 자리 표시자 역할을 합니다.
1. BETWEEN 사용
다음 예에서는 시간당 급여가 27에서 30 사이인 Adventure Works Cycles 직원을 반환합니다.
USE AdventureWorks;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e
JOIN HumanResources.EmployeePayHistory ep
ON e.EmployeeID = ep.EmployeeID
WHERE ep.Rate BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO
결과 집합은 다음과 같습니다.
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 Sheela Word 30.0000 (10 row(s) affected)
2. BETWEEN 대신 > 및 < 사용
다음 예에서는 보다 큼(>) 및 보다 작음(<) 연산자를 사용합니다. 이 연산자는 경계값을 포함하지 않기 때문에 이전 예에서 10개의 행을 반환한 것과 달리 9개의 행을 반환합니다.
USE AdventureWorks;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e
JOIN HumanResources.EmployeePayHistory ep
ON e.EmployeeID = ep.EmployeeID
WHERE ep.Rate > 27 AND ep.Rate < 30
ORDER BY ep.Rate;
GO
결과 집합은 다음과 같습니다.
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)
3. NOT BETWEEN 사용
다음 예에서는 지정한 범위인 27에서 30사이에 속하지 않는 모든 행을 검색합니다.
USE AdventureWorks;
GO
SELECT e.FirstName, e.LastName, ep.Rate
FROM HumanResources.vEmployee e
JOIN HumanResources.EmployeePayHistory ep
ON e.EmployeeID = ep.EmployeeID
WHERE ep.Rate NOT BETWEEN 27 AND 30
ORDER BY ep.Rate;
GO
4. BETWEEN에 datetime 값 사용
다음 예에서는 datetime 값이 '19971212' 이상 '19980105' 이하인 행을 검색합니다.
USE AdventureWorks GO SELECT EmployeeID, RateChangeDate FROM HumanResources.EmployeePayHistory WHERE RateChangeDate BETWEEN '19971212' AND '19980105'
결과 집합은 다음과 같습니다.
EmployeeID RateChangeDate
----------- -----------------------
3 1997-12-12 00:00:00.000
4 1998-01-05 00:00:00.000
쿼리의 날짜 값과 RateChangeDate 열에 저장된 datetime 값을 날짜의 시간 부분 없이 지정했으므로 이 쿼리는 필요한 행을 검색합니다. 시간 부분을 지정하지 않으면 기본적으로 12:00 A.M.이 사용됩니다. 1998-0105에서 12:00 A.M. 이후의 시간 부분이 포함된 행은 범위를 벗어났으므로 이 쿼리에서 반환되지 않습니다.
