Операторы фильтрации

Последнее обновление: 13.07.2017

Оператор IN

Оператор IN позволяет определить набор значений, которые должны иметь столбцы:

WHERE выражение [NOT] IN (выражение)

Выражение в скобках после IN определяет набор значений. Этот набор может вычисляться динамически на основании, например, еще одного запроса, либо это могут быть константные значения.

Например, выберем товары, у которых производитель либо Samsung, либо Xiaomi, либо Huawei:

SELECT * FROM Products
WHERE Manufacturer IN ('Samsung', 'Xiaomi', 'Huawei')
Оператор IN в T-SQL

Мы могли бы все эти значения проверить и через оператор OR:

SELECT * FROM Products
WHERE Manufacturer = 'Samsung' OR Manufacturer = 'Xiaomi' OR Manufacturer = 'Huawei'

Но использование оператора IN гораздо удобнее, особенно если подобных значений очень много.

С помощью оператора NOT можно найти все строки, которые, наоборот, не соответствуют набору значений:

SELECT * FROM Products
WHERE Manufacturer NOT IN ('Samsung', 'Xiaomi', 'Huawei')

Оператор BETWEEN

Оператор BETWEEN определяет диапазон значений с помощью начального и конечного значения, которому должно соответствовать выражение:

WHERE выражение [NOT] BETWEEN начальное_значение AND конечное_значение

Например, получим все товары, у которых цена от 20 000 до 40 000 (начальное и конечное значения также включаются в диапазон):

SELECT * FROM Products
WHERE Price BETWEEN 20000 AND 40000
Оператор BETWEEN в T-SQL

Если надо, наоборот, выбрать те строки, которые не попадают в данный диапазон, то применяется оператор NOT:

SELECT * FROM Products
WHERE Price NOT BETWEEN 20000 AND 40000

Также можно использовать более сложные выражения. Например, получим товары, запасы которых на определенную сумму (цена * количество):

SELECT * FROM Products
WHERE Price * ProductCount BETWEEN 100000 AND 200000

Оператор LIKE

Оператор LIKE принимает шаблон строки, которому должно соответствовать выражение.

WHERE выражение [NOT] LIKE шаблон_строки

Для определения шаблона могут применяться ряд специальных символов подстановки:

  • %: соответствует любой подстроке, которая может иметь любое количество символов, при этом подстрока может и не содержать ни одного символа

  • _: соответствует любому одиночному символу

  • [ ]: соответствует одному символу, который указан в квадратных скобках

  • [ - ]: соответствует одному символу из определенного диапазона

  • [ ^ ]: соответствует одному символу, который не указан после символа ^

Некоторые примеры использования подстановок:

  • WHERE ProductName LIKE 'Galaxy%'

    Соответствует таким значениям как "Galaxy Ace 2" или "Galaxy S7"

  • WHERE ProductName LIKE 'Galaxy S_'

    Соответствует таким значениям как "Galaxy S7" или "Galaxy S8"

  • WHERE ProductName LIKE 'iPhone [78]'

    Соответствует таким значениям как "iPhone 7" или "iPhone8"

  • WHERE ProductName LIKE 'iPhone [6-8]'

    Соответствует таким значениям как "iPhone 6", "iPhone 7" или "iPhone8"

  • WHERE ProductName LIKE 'iPhone [^7]%'

    Соответствует таким значениям как "iPhone 6", "iPhone 6S" или "iPhone8". Но не соответствует значениям "iPhone 7" и "iPhone 7S"

  • WHERE ProductName LIKE 'iPhone [^1-6]%'

    Соответствует таким значениям как "iPhone 7", "iPhone 7S" и "iPhone 8". Но не соответствует значениям "iPhone 5", "iPhone 6" и "iPhone 6S"

Применим оператор LIKE:

SELECT * FROM Products
WHERE ProductName LIKE 'iPhone [6-8]%'
Оператор LIKE в T-SQL
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850