SQL Server Предложение WHERE

В этом руководстве вы узнаете, как использовать предложение WHERE SQL Server для фильтрации строк, возвращаемых запросом.

Введение в предложение WHERE SQL Server

Оператор SELECT извлекает все строки из таблицы. Однако это часто не нужно, поскольку приложению может потребоваться обработать только подмножество строк в данный момент.

Чтобы извлечь строки, удовлетворяющие одному или нескольким условиям, используйте предложение WHERE в операторе SELECT.

Вот синтаксис предложения WHERE:

SELECT
    select_list
FROM
    table_name
WHERE
    search_condition;

В этом синтаксисе search_condition — это логическое выражение или комбинация нескольких логических выражений. В SQL логическое выражение также известно как предикат.

В предложении WHERE вы указываете условие поиска для фильтрации строк, возвращаемых предложением FROM. Предложение WHERE возвращает только те строки, для которых search_condition оценивается как TRUE.

Обратите внимание, что SQL Server использует трехзначную логику предикатов, где логическое выражение может оцениваться как TRUE, FALSE или UNKNOWN. Предложение WHERE не вернет ни одной строки, которая приведет к тому, что предикат будет оцениваться как FALSE или UNKNOWN.

Примеры WHERE для SQL Server

Для демонстрации мы будем использовать таблицу production.products из образца базы данных.

Таблица продуктов

1) Использование предложения WHERE с простым оператором равенства

В следующем запросе используется предложение WHERE для извлечения продуктов с идентификатором категории 1:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    category_id = 1
ORDER BY
    list_price DESC;

Выход:

2) Использование предложения WHERE с оператором AND

В следующем примере используется предложение WHERE для поиска продуктов, относящихся к категории с идентификатором 1 и модели 2018:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    category_id = 1 AND model_year = 2018
ORDER BY
    list_price DESC;

Выход:

SQL Server WHERE — соответствие двум условиям

В этом примере условие в предложении WHERE использует логический оператор AND для объединения двух условий.

3) Использование WHERE для фильтрации строк с помощью оператора сравнения

Следующий оператор находит продукты с розничной ценой более 300 и моделью 2018 года.

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price > 300 AND model_year = 2018
ORDER BY
    list_price DESC;

Выход:

SQL Server WHERE — операторы сравнения

4) Использование предложения WHERE для фильтрации строк, которые соответствуют любому из двух условий

Следующий запрос использует предложение WHERE для поиска продуктов, которые соответствуют одному из условий: цена по прейскуранту больше 3000 или модель 2018 года:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price > 3000 OR model_year = 2018
ORDER BY
    list_price DESC;

Выход:

SQL Server WHERE — соответствует любому из двух условий

Обратите внимание, что предложение WHERE использует оператор OR для объединения условий.

5) Использование предложения WHERE для фильтрации строк со значением между двумя значениями

Следующий оператор находит продукты с ценами от 1899 до 1999,99:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price BETWEEN 1899.00 AND 1999.99
ORDER BY
    list_price DESC;

Выход:

SQL Server WHERE - между оператором

6) Использование предложения WHERE для фильтрации строк, имеющих значение в списке значений

В следующем примере оператор IN используется для поиска продуктов с ценой по прейскуранту 299,99, 466,99 или 489,99.

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    list_price IN(299.99, 369.99, 489.99)
ORDER BY
    list_price DESC;

Выход:

SQL Server WHERE - IN operator

7) Поиск строк, значения которых содержат строку

В следующем примере оператор LIKE используется для поиска продуктов, название которых содержит строку Cruiser:

SELECT
    product_id,
    product_name,
    category_id,
    model_year,
    list_price
FROM
    production.products
WHERE
    product_name LIKE '%Cruiser%'
ORDER BY
    list_price;

Выход:

SQL Server оператор WHERE - LIKE

Краткое содержание

  • Используйте предложение WHERE SQL Server для фильтрации строк на основе одного или нескольких условий.
Мирослав С.

Автор статей, ИБ-специалист