Параметр WHERE в мові SQL виконує фільтрацію рядків які отримуються після запиту, згідно з заданими умовами. Умови задаються предикатами.

Приклади ред.

WHERE це зарезервоване слово в SQL.

Пункт WHERE використовується разом з виразом SQL DML, і має наступну форму:

SQL-DML-Statement
FROM table_name 
WHERE predicate

повертаються всі рядки для яких предикат в пункті WHERE Істина. Рядки для яких предикат має значення Хиба або Невідомо (NULL) вважаються такими, що не відповідають критерію відбору.

Наступний запит повертає рядки з mytable для яких mycol більше ніж 100.

SELECT *
FROM   mytable
WHERE  mycol > 100

Натупний вираз DELETE видаляє рядки, з mytable де mycol або NULL, або дорівнює 100.

DELETE
FROM   mytable
WHERE  mycol IS NULL OR mycol = 100

Предикати ред.

Прості предикати використовують операцію з набору =, <>, >, >=, <, <=, IN, BETWEEN, LIKE, IS NULL або IS NOT NULL.

При потребі предикати можуть бути відокремлені дужками. Ключові слова AND і OR можуть бути використані для об'єднання двох предикатів в один новий. Якщо утворюється багато комбінацій, то дужки можна використати для визначення порядку обчислення. Без дужок AND має вищий пріоритет ніж OR.

Наступний приклад видаляє рядки з mytable де значення mycol більше ніж 100 та значення item дорівнює рядку 'Hammer':

DELETE
FROM   mytable
WHERE  mycol > 100 AND item = 'Hammer'

IN ред.

IN знаходить всі значення, що присутні в поданому наборі.

SELECT ename WHERE ename IN ('value1', 'value2', ...)

Тотожно з

SELECT ename WHERE ename='value1' OR ename='value2'

окрім того, що в другому варіанті можливо порівнювати різні стовпці, в той час при використанні IN ні.

BETWEEN ред.

BETWEEN знаходить всі значення в заданих межах.

SELECT ename WHERE ename BETWEEN 'value1' AND 'value2'

Будуть відібрані всі рядки зі значеннями між 'value1' та 'value2', включно.

LIKE ред.

LIKE знаходить рядки, що відповідають певному шаблону.

  • Завершальна підстановка
    • Знаходить будь-який рядок, що починається з літери 'S'
SELECT ename
 FROM emp 
WHERE ename LIKE 'S%';
  • Початкова підстановка
    • Знаходить будь-який рядок, що завершується літерою 'S'
SELECT ename FROM emp WHERE ename LIKE '%S';
  • Комбінація підстановок
    • Знайти будь-який рядок з літерою 'S'
SELECT ename FROM emp WHERE ename LIKE '%S%';
  • Односимвольна підстановка
    • Знайти будь-який рядок, що містить літеру 'A' з будь-яким наступним символом і потім 'E'
SELECT ename FROM emp WHERE ename LIKE '%A_E%';

SQL програмісти мають бути обережними з використанням предиката LIKE через його негативний вплив на швидкодію.