Страницы

Поиск по вопросам

понедельник, 24 сентября 2018 г.

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

Оператор IN

Оператор IN позволяет определить набор значений, которые должны иметь столбцы:
1
WHERE выражение [NOT] IN (выражение)
Выражение в скобках после IN определяет набор значений. Этот набор может вычисляться динамически на основании, например, еще одного запроса, либо это могут быть константные значения.
Например, выберем товары, у которых производитель либо Samsung, либо Xiaomi, либо Huawei:
1
2
SELECT * FROM Products
WHERE Manufacturer IN ('Samsung', 'Xiaomi', 'Huawei')
Оператор IN в T-SQL
Мы могли бы все эти значения проверить и через оператор OR:
1
2
SELECT * FROM Products
WHERE Manufacturer = 'Samsung' OR Manufacturer = 'Xiaomi' OR Manufacturer = 'Huawei'
Но использование оператора IN гораздо удобнее, особенно если подобных значений очень много.
С помощью оператора NOT можно найти все строки, которые, наоборот, не соответствуют набору значений:
1
2
SELECT * FROM Products
WHERE Manufacturer NOT IN ('Samsung', 'Xiaomi', 'Huawei')

Оператор BETWEEN

Оператор BETWEEN определяет диапазон значений с помощью начального и конечного значения, которому должно соответствовать выражение:
1
WHERE выражение [NOT] BETWEEN начальное_значение AND конечное_значение
Например, получим все товары, у которых цена от 20 000 до 40 000 (начальное и конечное значения также включаются в диапазон):
1
2
SELECT * FROM Products
WHERE Price BETWEEN 20000 AND 40000
Оператор BETWEEN в T-SQL
Если надо, наоборот, выбрать те строки, которые не попадают в данный диапазон, то применяется оператор NOT:
1
2
SELECT * FROM Products
WHERE Price NOT BETWEEN 20000 AND 40000
Также можно использовать более сложные выражения. Например, получим товары, запасы которых на определенную сумму (цена * количество):
1
2
SELECT * FROM Products
WHERE Price * ProductCount BETWEEN 100000 AND 200000

Оператор LIKE

Оператор LIKE принимает шаблон строки, которому должно соответствовать выражение.
1
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:
1
2
SELECT * FROM Products
WHERE ProductName LIKE 'iPhone [6-8]%'
Оператор LIKE в T-SQL

Комментариев нет:

Отправить комментарий