Фильтрация. WHERE

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

Для фильтрации в команде SELECT применяется оператор WHERE. После этого оператора ставится условие, которому должна соответствовать строка:

WHERE условие

Если условие истинно, то строка попадает в результирующую выборку. В качестве можно использовать операции сравнения. Эти операции сравнивают два выражения. В T-SQL можно применять следующие операции сравнения:

  • =: сравнение на равенство (в отличие от си-подобных языков в T-SQL для сравнения на равенство используется один знак равно)

  • <>: сравнение на неравенство

  • <: меньше чем

  • >: больше чем

  • !<: не меньше чем

  • !>: не больше чем

  • <=: меньше чем или равно

  • >=: больше чем или равно

Например, найдем всех товары, производителем которых является компания Samsung:

SELECT * FROM Products
WHERE Manufacturer = 'Samsung'
Фильтрация WHERE в T-SQL

Стоит отметить, что в данном случае регистр не имеет значение, и мы могли бы использовать для поиска и строку "Samsung", и "SAMSUNG", и "samsung". Все эти варианты давали бы эквивалентный результат выборки.

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

SELECT * FROM Products
WHERE Price > 45000

В качестве условия могут использоваться и более сложные выражения. Например, найдем все товары, у которых совокупная стоимость больше 200 000:

SELECT * FROM Products
WHERE Price * ProductCount > 200000
Оператор WHERE в MS SQL Server

Логические операторы

Для объединения нескольких условий в одно могут использоваться логические операторы. В T-SQL имеются следующие логические операторы:

  • AND: операция логического И. Она объединяет два выражения:

    выражение1 AND выражение2

    Только если оба этих выражения одновременно истинны, то и общее условие оператора AND также будет истинно. То есть если и первое условие истинно, и второе.

  • OR: операция логического ИЛИ. Она также объединяет два выражения:

    выражение1 OR выражение2

    Если хотя бы одно из этих выражений истинно, то общее условие оператора OR также будет истинно. То есть если или первое условие истинно, или второе.

  • NOT: операция логического отрицания. Если выражение в этой операции ложно, то общее условие истинно.

    NOT выражение

Если эти операторы встречаются в одном выражении, то сначала выполняется NOT, потом AND и в конце OR.

Например, выберем все товары, у которых производитель Samsung и одновременно цена больше 50000:

SELECT * FROM Products
WHERE Manufacturer = 'Samsung' AND Price > 50000
Логический оператор AND в T-SQL

Теперь изменим оператор на OR. То есть выберем все товары, у которых либо производитель Samsung, либо цена больше 50000:

SELECT * FROM Products
WHERE Manufacturer = 'Samsung' OR Price > 50000
Логический оператор OR в T-SQL

Применение оператора NOT - выберем все товары, у которых производитель не Samsung:

SELECT * FROM Products
WHERE NOT Manufacturer = 'Samsung'
Логический оператор not в T-SQL

Но в большинстве случае вполне можно обойтись без оператора NOT. Так, в предыдущий пример мы можем переписать следующим образом:

SELECT * FROM Products
WHERE Manufacturer <> 'Samsung'

Также в одной команде SELECT можно использовать сразу несколько операторов:

SELECT * FROM Products
WHERE Manufacturer = 'Samsung' OR Price > 30000 AND ProductCount > 2

Так как оператор AND имеет более высокий приоритет, то сначала будет выполняться подвыражение Price > 30000 AND ProductCount > 2, и только потом оператор OR. То есть здесь выбираются товары, которыех на складе больше 2 и у которых одновременно цена больше 30000, либо те товары, производителем которых является Samsung.

Операторы AND и OR в запросах T-SQL

С помощью скобок мы также можем переопределить порядок операций:

SELECT * FROM Products
WHERE (Manufacturer = 'Samsung' OR Price > 30000) AND ProductCount > 2

IS NULL

Ряд столбцов может допускать значение NULL. Это значение не эквивалентно пустой строке ''. NULL представляет полное отсутствие какого-либо значения. И для проверки на наличие подобного значения применяется оператор IS NULL.

Например, выберем все товары, у которых не установлено поле ProductCount:

SELECT * FROM Products
WHERE ProductCount IS NULL

Если, наоборот, необходимо получить строки, у которых поле ProductCount не равно NULL, то можно использовать оператор NOT:

SELECT * FROM Products
WHERE ProductCount IS NOT NULL
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850