SQL - WHERE & Operators
Overview
Filter rows using predicates. Combine with AND/OR/NOT. Beware NULL semantics: comparisons with NULL are UNKNOWN—use IS NULL.
Common predicates
- Comparison: =, !=/<> (not equal), <, <=, >, >=
- Ranges: BETWEEN
- Sets: IN, NOT IN
- Patterns: LIKE with % and _
- Null checks: IS NULL / IS NOT NULL
SELECT *
FROM employees
WHERE salary BETWEEN 80000 AND 150000
  AND first_name LIKE 'A%'
  AND department_id IN (1,2,3)
  AND hired_at IS NOT NULL;
SELECT *
FROM employees
WHERE salary BETWEEN 80000 AND 150000
  AND first_name LIKE N'A%'
  AND department_id IN (1,2,3)
  AND hired_at IS NOT NULL;
SELECT *
FROM employees
WHERE salary BETWEEN 80000 AND 150000
  AND first_name LIKE 'A%'
  AND department_id IN (1,2,3)
  AND hired_at IS NOT NULL;
Prerequisite
Load the Standard Test Data.
Expected Output
Given the test dataset, this filter returns only Ada:
| id | first_name | department_id | salary | hired_at | 
|---|---|---|---|---|
| 1 | Ada | 1 | 120000 | 2021-01-10 10:00:00 | 
Sample Use Cases (5)
1) Filter by gender = 'Female'
SELECT id, first_name, gender
FROM employees
WHERE gender = 'Female';
SELECT id, first_name, gender
FROM employees
WHERE gender = N'Female';
SELECT id, first_name, gender
FROM employees
WHERE gender = 'Female';
| id | first_name | gender | 
|---|---|---|
| 1 | Ada | Female | 
| 4 | Dee | Female | 
2) Salary >= 100000
SELECT id, first_name, salary
FROM employees
WHERE salary >= 100000;
SELECT id, first_name, salary
FROM employees
WHERE salary >= 100000;
SELECT id, first_name, salary
FROM employees
WHERE salary >= 100000;
| id | first_name | salary | 
|---|---|---|
| 5 | Eli | 130000 | 
| 1 | Ada | 120000 | 
| 4 | Dee | 110000 | 
3) Names starting with B or E
SELECT id, first_name
FROM employees
WHERE first_name LIKE 'B%'
   OR first_name LIKE 'E%';
SELECT id, first_name
FROM employees
WHERE first_name LIKE N'B%'
   OR first_name LIKE N'E%';
SELECT id, first_name
FROM employees
WHERE first_name LIKE 'B%'
   OR first_name LIKE 'E%';
| id | first_name | 
|---|---|
| 2 | Bob | 
| 5 | Eli | 
4) Employees in the 'Engineering' department
SELECT e.id, e.first_name, d.name AS department
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE d.name = 'Engineering';
SELECT e.id, e.first_name, d.name AS department
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE d.name = N'Engineering';
SELECT e.id, e.first_name, d.name AS department
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE d.name = 'Engineering';
| id | first_name | department | 
|---|---|---|
| 1 | Ada | Engineering | 
| 2 | Bob | Engineering | 
| 5 | Eli | Engineering | 
5) Hired during year 2021
SELECT id, first_name, hired_at
FROM employees
WHERE hired_at >= '2021-01-01' AND hired_at < '2022-01-01';
SELECT id, first_name, hired_at
FROM employees
WHERE hired_at >= '2021-01-01' AND hired_at < '2022-01-01';
SELECT id, first_name, hired_at
FROM employees
WHERE hired_at >= '2021-01-01' AND hired_at < '2022-01-01';
| id | first_name | hired_at | 
|---|---|---|
| 1 | Ada | 2021-01-10 10:00:00 | 
| 2 | Bob | 2021-05-05 09:30:00 |