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:

idfirst_namedepartment_idsalaryhired_at
1Ada11200002021-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';
idfirst_namegender
1AdaFemale
4DeeFemale

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;
idfirst_namesalary
5Eli130000
1Ada120000
4Dee110000

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%';
idfirst_name
2Bob
5Eli

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';
idfirst_namedepartment
1AdaEngineering
2BobEngineering
5EliEngineering

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';
idfirst_namehired_at
1Ada2021-01-10 10:00:00
2Bob2021-05-05 09:30:00