Specifies a range to test.
test_expression [ NOT ] BETWEEN begin_expression AND end_expression
test_expression
Is the expression to test for in the range defined by begin_expression and end_expression. test_expression must be the same data type as both begin_expression and end_expression.
NOT
Specifies that the result of the predicate be negated.
begin_expression
Is any valid Microsoft® SQL Server™ expression. begin_expression must be the same data type as both test_expression and end_expression.
end_expression
Is any valid SQL Server expression. end_expression must be the same data type as both test_expression and begin_expression.
AND
Acts as a placeholder indicating that test_expression should be within the range indicated by begin_expression and end_expression.
Boolean
BETWEEN returns TRUE if the value of test_expression is greater than or equal to the value of begin_expression and less than or equal to the value of end_expression.
NOT BETWEEN returns TRUE if the value of test_expression is less than the value of begin_expression or greater than the value of end_expression.
To specify an exclusive range, use the greater than (>) and less than operators (<). If any input to the BETWEEN or NOT BETWEEN predicate is NULL, the result is UNKNOWN.
This example returns title identifiers for books with year-to-date unit sales from 4,095 through 12,000.
USE pubs
GO
SELECT title_id, ytd_sales
FROM titles
WHERE ytd_sales BETWEEN 4095 AND 12000
GO
Here is the result set:
title_id ytd_sales 
-------- ----------- 
BU1032   4095        
BU7832   4095        
PC1035   8780        
PC8888   4095        
TC7777   4095        
(5 row(s) affected)
This example, which uses greater than (>) and less than (<) operators, returns different results because these operators are not inclusive.
USE pubs
GO
SELECT title_id, ytd_sales      
FROM titles      
WHERE ytd_sales > 4095 AND ytd_sales < 12000      
GO
Here is the result set:
title_id ytd_sales   
-------- ----------- 
PC1035   8780        
(1 row(s) affected)
This example finds all rows outside a specified range (from 4,095 through 12,000).
USE pubs
GO
SELECT title_id, ytd_sales
FROM titles
WHERE ytd_sales NOT BETWEEN 4095 AND 12000
GO
Here is the result set:
title_id ytd_sales   
-------- ----------- 
BU1111   3876        
BU2075   18722       
MC2222   2032        
MC3021   22246       
PS1372   375         
PS2091   2045        
PS2106   111         
PS3333   4072        
PS7777   3336        
TC3218   375         
TC4203   15096       
(11 row(s) affected)
Operators (Logical Operators)
SELECT (Subqueries)