При построении сложных условий в запросах на языке SQL можно использовать специальные ключевые слова (операторы): IN, BETWEEN, LIKE и IS NULL.
IN- определяет множество, которому данное значение может принадлежать или нет. Оператор IN обычно задает список значений. Например, необходимо найти всех продавцов, которые живут либо в «Москве», либо ( «ИЛИ») в «Туле». Этот запрос можно записать, используя логический оператор OR, как показано ниже
SELECT * FROM Salespeople WHERE saddress="Москва" OR saddress="Тула";
SQL-запрос со специальным словом IN в этом случае будет выглядеть так:
SELECT * FROM Salespeople WHERE saddress IN ("Москва" , "Тула"); .
Результат запроса показан на рис. 19. ниже, (отобраны строки с продавцами, которые живут либо по адресу "Москва", либо по адресу "Тула").
Аналогично устроен оператор BETWEEN , который определяет границы параметров. Если мы хотим отобрать всех продавцов, комиссионные которых больше (или равно) 0.10 и меньше (или равно) 0.15. Этот запрос можно записать двумя способами:
SELECT * FROM Salespeople WHERE comm >= 0.12 AND comm <= 0.15;
или
SELECT * FROM Salespeople WHERE comm. BETWEEN 0.10 AND 0.12;
Результат выполнения запроса показан на рис. 20.
Рис. 19. Результат запроса с ключевым словом IN.
Рис. 20. Результат запроса с ключевым словом BETWEEN.
Замечание: оператор BETWEEN включат границы интервала.
Оператор LIKE применим только к полям типа CHAR или VARCHAR так как он выполняет функцию поиска строк со значением заданного поля, удовлетворяющего подстроке заданного маской. Маска формируется с учетом функций специальных символов, наборы которых отличаются в разных реализациях СУБД. В СУБД Access приняты следующие спецсимволы для формирования маски поиска:
· * (символ «звездочка»)- заменяет цепочку символов ( или это значит, что значения символов в данной позиции роли не играет, например, “М*” - означает все, начинающиеся с буквы М);
· ? (символ «знак вопроса») – заменяет любой символ (например, по маске “М?к” – отберуться строки со словами Мак, Мик, Мук и т.п.).
Рассмотрим примеры SQL-запросов с оператором LIKE() применительно к базе данных автосалона (Avto.mdb):
Например, построим запрос: найти всех покупателей, фамилия которых начинается на букву «С». Маска для выборки строк ("С*"). На языке SQL этот запрос можно записать так:
SELECT * FROM Customers WHERE cname LIKE("С*");
Результат запроса представлен на рис.21.
Рис. 21. Результат запроса с оператором LIKE("С*")
Использование оператора IS NULL позволяет выбрать все строки, в которых значения принимают значение NULL (т.е. нет значения). Например, выбрать всех покупателей, у которых нет номеров телефонов:
SELECT * FROM Customers WHERE ctel IS NULL;
Результат выполнения запроса показан на рис.22. ниже.
Рис. 22. Результат запроса с оператором IS NULL
Таким образом, применение специальных ключевых слов IN, BETWEEN, LIKE IS NULL упрощает запись SQL-запроса и делает его лучше читаемым.