Оператор IN позволяет определить набор значений, которые должны иметь столбцы:
WHERE выражение [NOT] IN (выражение)
Выражение в скобках после IN определяет набор значений. Этот набор может вычисляться динамически на основании, например, еще одного запроса, либо это могут быть константные значения.
Например, выберем товары, у которых производитель либо Samsung, либо Xiaomi, либо Huawei:
SELECT * FROM Products WHERE Manufacturer IN ('Samsung', 'HTC', 'Huawei');
В качестве алтернативы можно было бы проверить все эти значения через оператор OR:
SELECT * FROM Products WHERE Manufacturer = 'Samsung' OR Manufacturer = 'HTC' OR Manufacturer = 'Huawei';
Однако использование оператора IN гораздо удобнее, особенно если подобных значений очень много.
С помощью оператора NOT можно найти все строки, которые, наоборот, не соответствуют набору значений:
SELECT * FROM Products WHERE Manufacturer NOT IN ('Samsung', 'HTC', 'Huawei');
Оператор BETWEEN определяет диапазон значений с помощью начального и конечного значения, которому должно соответствовать выражение:
WHERE выражение [NOT] BETWEEN начальное_значение AND конечное_значение
Например, получим все товары, у которых цена от 20 000 до 50 000 (начальное и конечное значения также включаются в диапазон):
SELECT * FROM Products WHERE Price BETWEEN 20000 AND 50000;
Если надо, наоборот, выбрать те строки, которые не попадают в данный диапазон, то применяется оператор NOT:
SELECT * FROM Products WHERE Price NOT BETWEEN 20000 AND 50000;
Также можно использовать более сложные выражения. Например, получим товары, запасы которых на определенную сумму (цена * количество):
SELECT * FROM Products WHERE Price * ProductCount BETWEEN 90000 AND 150000;
Оператор LIKE принимает шаблон строки, которому должно соответствовать выражение.
WHERE выражение [NOT] LIKE шаблон_строки
Для определения шаблона могут применяться ряд специальных символов подстановки:
%: соответствует любой подстроке, которая может иметь любое количество символов, при этом подстрока может и не содержать ни одного символа
Например, выражение WHERE ProductName LIKE 'Galaxy%'
соответствует таким значениям как "Galaxy Ace 2" или "Galaxy S7"
_: соответствует любому одиночному символу
Например, выражение WHERE ProductName LIKE 'Galaxy S_'
соответствует таким значениям как "Galaxy S7" или "Galaxy S8".
Применим оператор LIKE:
SELECT * FROM Products WHERE ProductName LIKE 'iPhone%';