Where (SQL)
Параметр 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
через його негативний вплив на швидкодію.