Страницы

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

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

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

Для фильтрации в команде SELECT применяется оператор WHERE. После этого оператора ставится условие, которому должна соответствовать строка:
1
WHERE условие
Если условие истинно, то строка попадает в результирующую выборку. В качестве можно использовать операции сравнения. Эти операции сравнивают два выражения. В T-SQL можно применять следующие операции сравнения:
  • =: сравнение на равенство (в отличие от си-подобных языков в T-SQL для сравнения на равенство используется один знак равно)
  • <>: сравнение на неравенство
  • <: меньше чем
  • >: больше чем
  • !<: не меньше чем
  • !>: не больше чем
  • <=: меньше чем или равно
  • >=: больше чем или равно
Например, найдем всех товары, производителем которых является компания Samsung:
1
2
SELECT * FROM Products
WHERE Manufacturer = 'Samsung'
Фильтрация WHERE в T-SQL
Стоит отметить, что в данном случае регистр не имеет значение, и мы могли бы использовать для поиска и строку "Samsung", и "SAMSUNG", и "samsung". Все эти варианты давали бы эквивалентный результат выборки.
Другой пример - найдем все товары, у которых цена больше 45000:
1
2
SELECT * FROM Products
WHERE Price > 45000
В качестве условия могут использоваться и более сложные выражения. Например, найдем все товары, у которых совокупная стоимость больше 200 000:
1
2
SELECT * FROM Products
WHERE Price * ProductCount > 200000
Оператор WHERE в MS SQL Server

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

Для объединения нескольких условий в одно могут использоваться логические операторы. В T-SQL имеются следующие логические операторы:
  • AND: операция логического И. Она объединяет два выражения:
    1
    выражение1 AND выражение2
Только если оба этих выражения одновременно истинны, то и общее условие оператора AND также будет истинно. То есть если и первое условие истинно, и второе.

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

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

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

  • Если эти операторы встречаются в одном выражении, то сначала выполняется NOT, потом AND и в конце OR.
    Например, выберем все товары, у которых производитель Samsung и одновременно цена больше 50000:
    1
    2
    SELECT * FROM Products
    WHERE Manufacturer = 'Samsung' AND Price > 50000
    Логический оператор AND в T-SQL
    Теперь изменим оператор на OR. То есть выберем все товары, у которых либо производитель Samsung, либо цена больше 50000:
    1
    2
    SELECT * FROM Products
    WHERE Manufacturer = 'Samsung' OR Price > 50000
    Логический оператор OR в T-SQL
    Применение оператора NOT - выберем все товары, у которых производитель не Samsung:
    1
    2
    SELECT * FROM Products
    WHERE NOT Manufacturer = 'Samsung'
    Логический оператор not в T-SQL
    Но в большинстве случае вполне можно обойтись без оператора NOT. Так, в предыдущий пример мы можем переписать следующим образом:
    1
    2
    SELECT * FROM Products
    WHERE Manufacturer <> 'Samsung'
    Также в одной команде SELECT можно использовать сразу несколько операторов:
    1
    2
    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
    С помощью скобок мы также можем переопределить порядок операций:
    1
    2
    SELECT * FROM Products
    WHERE (Manufacturer = 'Samsung' OR Price > 30000) AND ProductCount > 2

    IS NULL

    Ряд столбцов может допускать значение NULL. Это значение не эквивалентно пустой строке ''. NULL представляет полное отсутствие какого-либо значения. И для проверки на наличие подобного значения применяется оператор IS NULL.
    Например, выберем все товары, у которых не установлено поле ProductCount:
    1
    2
    SELECT * FROM Products
    WHERE ProductCount IS NULL
    Если, наоборот, необходимо получить строки, у которых поле ProductCount не равно NULL, то можно использовать оператор NOT:
    1
    2
    SELECT * FROM Products
    WHERE ProductCount IS NOT NULL

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

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