
- •Содержание
- •11.1. Расчет результирующих столбцов на основе арифметических выражений.
- •11.2. Агрегатные функции.
- •11.3. Использование группировок записей (group by).
- •11.4. Предложение having – наложение ограничений на группировку записей.
- •11.5. Предложение where. Задание сложных условий поиска.
- •11.5.1. Использование логических выражений.
- •11.5.2. Сравнение значения столбца с результатом значения выражения.
- •11.5.3. Использование функции between.
- •11.5.4. Использование in (список значений).
- •11.5.5. Использование функции starting.
- •11.5.6. Использование функции containing.
- •11.5.7. Использование функции upper.
- •11.5.8. Использование функции like.
- •11.5.9. Использование функции cast.
- •11.5.10. Использование значения null в условиях поиска.
- •Контрольные вопросы:
11.5. Предложение where. Задание сложных условий поиска.
Ранее были рассмотрены простые варианты задания условия поиска в предложении WHERE (сравнение столбца с константой и внутреннее соединение). Однако условия поиска могут быть достаточно сложными, чему способствует и сам синтаксис оператора SELECT. Рассмотрим основные конструкции для построения сложных условий поиска.
11.5.1. Использование логических выражений.
Более сложные условия поиска могут быть построены с помощью логических операторов AND, OR или NOT, а также с помощью скобок, используемых для определения порядка вычисления выражения (если это необходимо или желательно). Вычисление выражений в условиях выполняется по следующим правилам.
Выражение вычисляется слева направо.
Первыми вычисляются подвыражения в скобках.
Операторы NOT выполняются до выполнения операторов AND и OR.
Операторы AND выполняются до выполнения операторов OR.
Для устранения любой возможной неоднозначности рекомендуется использовать скобки.
ПРИМЕР
Перечислите фамилии, имена и отчества читателей, занимающих должности доцентов и ассистентов.
SELECT Code, FamilyName, Name, Patronymic, Job, Post
FROM Readers
WHERE Post = ‘Доцент’ OR Post = ’Ассистент’;
В этом примере для выборки сведений о читателях, занимающих должности доцентов и ассистентов в предложении WHERE используется логический оператор OR: Post = ‘Доцент’ или Post = ’Ассистент’.
Результаты выполнения запроса представлены в таблице 11.9.
Таблица 11.9.
Code |
FamilyNamе |
Name |
Patronymic |
Job |
Post |
1 |
Иванов |
Петр |
Иванович |
ДГУ, каф. ЭВТ |
Ассистент |
3 |
Ильин |
Иван |
Петрович |
ДГУ, каф. физики |
Доцент |
5 |
Коршунова |
Наталья |
Юрьевна |
ДГУ, каф.геоинфо рматики |
Ассистент |
11.5.2. Сравнение значения столбца с результатом значения выражения.
Условие поиска в предложении WHERE может быть сформулировано при помощи выражения:
<выражение> <оператор> <столбец>
Может использоваться и другой способ написания условия поиска,
<столбец> <оператор> <выражение>,
Чаще всего это применяется при использовании механизма вложенных подзапросов (вложенных операторов SELECT), речь о которых пойдет ниже. В этом случае результат вычисления выражения сравнивается с содержимым указанного столбца.
ПРИМЕР
Для каждой книги определим произведение ее цены на сумму значений кода книги и фонда книги и выберем только те, у которых результат полученный при вычислении данного выражения больше 120.
SELECT Code, InventaryNumber,
(BookCode + FundCode) * Cost AS Example
FROM BookInventaryNumbers
WHERE ((BookCode + FundCode) * Cost) > 120
Результат выполнения запроса приведен в таблице 11.10.
Таблица 11.10
Code |
InventaryNumber |
Example |
3 |
4532477 |
136,04 |
5 |
4678532 |
397,46 |