SQL - BETWEEN Operator
The BETWEEN operator is used in the WHERE conditions to filter records within the specified range. The range of values can be strings, numbers, or dates. The range of values must be specified with the AND operator, as shown below.
Syntax:
SELECT column1, column2,..
FROM table
WHERE column BETWEEN begin_value AND end_value
For the demo purpose, we will use the following Employee
tables in all examples.
EmpId | FirstName | LastName | Salary | HireDate | |
---|---|---|---|---|---|
1 | 'John' | 'King' | '[email protected]' | 33000 | 2018-07-25 |
2 | 'James' | 'Bond' | 2018-07-29 | ||
3 | 'Neena' | 'Kochhar' | '[email protected]' | 17000 | 2018-08-22 |
4 | 'Lex' | 'De Haan' | '[email protected]' | 15000 | 2018-09-8 |
5 | 'Amit' | 'Patel' | 18000 | 2019-01-25 | |
6 | 'Abdul' | 'Kalam' | '[email protected]' | 25000 | 2020-07-14 |
Consider the following query.
SELECT EmpId, FirstName, LastName, Salary
FROM Employee
WHERE Salary BETWEEN 10000 AND 20000;
Above, the Salary
column is used with the BETWEEN operator to filter records. The Salary BETWEEN 10000 AND 20000;
specifies that the values in the Salary
column should be between 10000 and 20000 (inclusive of both values).
The above query will display the following result.
EmpId | FirstName | LastName | Salary |
---|---|---|---|
3 | 'Neena' | 'Kochhar' | 17000 |
4 | 'Lex' | 'De Haan' | 15000 |
5 | 'Amit' | 'Patel' | 18000 |
Note that you must use the AND operator with the BETWEEN operator; otherwise, it will raise an error.
BETWEEN Date Range
The following query uses the BETWEEN operator to specify the date range.
SELECT EmpId, FirstName, LastName, HireDate
FROM Employee
WHERE HireDate BETWEEN '2018-07-01' and '2018-8-31';
EmpId | FirstName | LastName | HireDate |
---|---|---|---|
1 | 'John' | 'King' | 2018-07-25 |
2 | 'James' | 'Bond' | 2018-07-29 |
3 | 'Neena' | 'Kochhar' | 2018-08-22 |
BETWEEN String Range
The following query uses the string range with the BETWEEN operator.
SELECT * FROM Employee
WHERE FirstName BETWEEN 'a%' AND 'j%';
Above, string range FirstName BETWEEN 'a%' AND 'j%'
fetches records where the FirstName
value should start from either 'a%' or any character before 'j%' (but not 'j'). It will display the following result.
EmpId | FirstName | LastName | Salary | HireDate | |
---|---|---|---|---|---|
5 | 'Amit' | 'Patel' | 18000 | 2019-01-25 | |
6 | 'Abdul' | 'Kalam' | '[email protected]' | 25000 | 2020-07-14 |
NOT BETWEEN
Use the NOT operator with the BETWEEN operator to filter records that do not fall in the specified range.
SELECT EmpId, FirstName, LastName, Salary
FROM Employee
WHERE Salary NOT BETWEEN 10000 AND 20000;
Above, the Salary
column is used with the BETWEEN operator to filter records. The Salary NOT BETWEEN 10000 AND 20000;
specifies that the value in the Salary
column should not be between 10000 and 20000.
The above query will display the following result.
EmpId | FirstName | LastName | Salary |
---|---|---|---|
1 | 'John' | 'King' | 33000 |
6 | 'Abdul' | 'Kalam' | 25000 |