- •Содержание
- •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.3. Использование функции between.
В условие поиска можно указать, что некоторое значение (столбец или вычисленное значение выражения) должно находиться в интервале между значением1 и значением2:
<значение> [NOT] BETWEEN <значение1> AND <значение2>
Зарезервированное слово NOT инвертирует условие (значение не должно находиться в интервале между значением1 и значением2).
ПРИМЕР
Перечислите инвентарные номера книг, цена которых лежит в диапазоне от 20 до 60 гривень.
SELECT InventaryNumber, Cost
FROM BookInventaryNumbers
WHERE Cost BETWEEN 20 AND 60;
В данном примере результаты проверки будут положительными для всех книг, цена которых лежит в пределах от 20 до 60 гривень.
Результаты выполнения запроса представлены в таблица 11.11.
Таблица 11.11.
Code |
FamilyNamе |
Name |
Patronymic |
Job |
Post |
1 |
Иванов |
Петр |
Иванович |
ДГУ, каф. ЭВТ |
Ассистент |
3 |
Ильин |
Иван |
Петрович |
ДГУ, каф. физики |
Доцент |
5 |
Коршунова |
Наталья |
Юрьевна |
ДГУ, каф.геоинфо рматики |
Ассистент |
Приведенный выше запрос можно переписать следующим образом:
SELECT InventaryNumber, Cost
FROM BookInventaryNumbers
WHERE Cost >= 20 AND Cost <=60;
Однако многие полагают, что проверка вхождения в диапазон с помощью ключевого слова BETWEEN является более простым способом записи условий выборки, чем обычные проверки.
11.5.4. Использование in (список значений).
Если нужно, чтобы значение какого-либо столбца (или результат вычисления некоторого выражения) совпадало с одним из дискретных значений, в условии поиска указывается предложение
<значение> [NOT] IN (<значение1> [, <значение2> ...])
Тогда в результирующий набор данных будут включены только те записи, для которых значение, стоящее слева от слова IN, равно одному из значений, указанных в списке (<значение1> [, <значение2> ...]).
ПРИМЕР
Используя таблицу PasportData, выведете код, серию и номер паспорта для лиц, проживающих в Донецке или Киеве.
SELECT Code, Series, Number, IssuePlace
FROM PasportData
WHERE IssuePlace IN (‘Донецк’, ‘Киев’);
Проверка вхождения результата вычисления выражения в заданное множество организуется с помощью ключевого слова IN. При этом проверяется, соответствует ли результат вычисления выражения одному из значений в предоставленном списке – в нашем случае это строки ‘Донецк’ и ‘Киев’.
Результаты выполнения запроса представлены в таблице 11.12.
Таблица 11.12.
Code |
Series |
Number |
IssuePlace |
4 |
АЕ |
12300 |
Донецк |
6 |
АЖ |
01568 |
Киев |
Как и в случае ключевого слова BETWEEN, условие IN незначительно повышает выразительную мощность языка SQL – тот же самый запрос может быть переписан следующим образом:
SELECT Code, Series, Number, IssuePlace
FROM PasportData
WHERE IssuePlace= ‘Донецк’ OR IssuePlace= ‘Киев’;
Однако использование ключевого слова IN представляет собой более эффективный способ записи условий поиска, особенно если набор допустимых значений достаточно велик.