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

  • п
  • о
  • р
SQL
Версії
  • SQL-86
  • SQL-89
  • SQL-92
  • SQL:1999
  • SQL:2003
  • SQL:2006
  • SQL:2008
  • SQL:2011
  • SQL:2016
Ключові слова
  • Alter
  • As
  • Case
  • Commit
  • Create
  • Delete
  • Drop
  • From
  • Group by
  • Having
  • Insert
  • Join
  • Merge
  • Null
  • Order by
  • Prepare[en]
  • Select
  • Truncate
  • Union
  • Update
  • Where
  • With
Пов'язані статті
Частини ISO/IEC SQL
  • Framework
  • Foundation
  • Call-Level Interface[en]
  • Persistent Stored Modules
  • Management of External Data
  • Object Language Bindings[en]
  • Information and Definition Schemas
  • SQL Routines and Types for the Java Programming Language[en]
  • XML-Related Specifications[en]