- •Содержание
- •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.5. Использование функции starting.
Если в условии поиска нужно, чтобы значение какого-либо символьного столбца или выражения начиналось с определенной подстроки, в условии поиска необходимо указать предложение
<значение> [NOT] STARTING [WITH] <подстрока>
Тогда в результирующий запрос будут включены только те строки, для которых выполняется указанное условие.
ПРИМЕР
Выберем коды, фамилии, имена и отчества читателей, начинающиеся с буквы «И».
SELECT Code, FamilyNamе, Name, Patronymic
FROM Readers
WHERE FamilyNamе STARTING WITH ‘И’;
Результаты выполнения запроса представлены в таблице 11.13.
Таблица 11.13.
Code |
FamilyNamе |
Name |
Patronymic |
1 |
Иванов |
Петр |
Иванович |
3 |
Ильин |
Иван |
Петрович |
11.5.6. Использование функции containing.
Если нужно, чтобы значение какого-либо символьного столбца или выражения включало в себя (неважно, начиная с какого символа) определенную подстроку, в условии поиска необходимо указать предложение
<значение> [NOT] CONTAINING <значение>
ПРИМЕР
Выберем коды, фамилии, имена и отчества читателей, в фамилии которых содержится последовательность букв «ко».
SELECT Code, FamilyNamе, Name, Patronymic
FROM Readers
WHERE FamilyNamе CONTAINING ‘ко’;
Результаты выполнения запроса представлены в таблице 11.14.
Таблица 11.14.
Code |
FamilyNamе |
Name |
Patronymic |
4 |
Суренко |
Дмитрий |
Павлович |
6 |
Носенко |
Олег |
Владимирович |
11.5.7. Использование функции upper.
Функция UPPER(<значение>) используется для преобразования букв символьных значений (содержимого столбца, результата вычисления выражения) к заглавным. Обычно эта функция используется в условиях поиска, когда необходимо игнорировать регистр букв. Функция UPPER может фигурировать как в списке столбцов результирующего набора данных (после слова SELECT), так и в условии поиска в предложении WHERE.
ПРИМЕР
Выберем коды, фамилии, имена и отчества читателей, в фамилии которых содержится последовательность букв «ко» не зависимо от того заглавные они или прописные.
SELECT Code, FamilyNamе, Name, Patronymic
FROM Readers
WHERE UPPER(FamilyNamе) CONTAINING ‘КО’;
Результаты выполнения запроса представлены в таблице 11.15.
Таблица 11.15.
Code |
FamilyNamе |
Name |
Patronymic |
4 |
Суренко |
Дмитрий |
Павлович |
5 |
Коршунова |
Наталья |
Юрьевна |
6 |
Носенко |
Олег |
Владимирович |
11.5.8. Использование функции like.
Предложение LIKE задает шаблоны сравнения строковых значений. Если необходимо, чтобы сравниваемое значение (значение столбца или результат вычисления строкового выражения) удовлетворяло шаблону, в условии поиска необходимо указать
<значение> [NOT] LIKE < шаблон> [ESCAPE <подшаблон>]
В шаблоне используются специальные символы – "%" и "_". Символ "%" (процент) используется для указания любого значения любой длины и символ "_" (подчеркивание) для указания любого единичного символа. Например:
IssuePlace LIKE ‘М%’ – это шаблон означает, что первый символ значения обязательно должен быть символом М, а все остальные символы не представляют интереса и не проверяются;
IssuePlace LIKE ‘М___’ – этот шаблон означает, что значение должно иметь длину, равную строго четырем символам, причем первым символом обязательно должен быть символ ‘М’;
IssuePlace LIKE ‘%е’ – этот шаблон определяет любую последовательность символов длиной не менее одного символа, причем последним символом обязательно должен быть символ ‘е’;
IssuePlace LIKE ‘%Днепропетровская область%’ – этот шаблон означает, что нас интересует любая последовательность символов, включающая подстроку ‘Днепропетровская область’;
IssuePlace NOT LIKE ‘М%’ – этот шаблон указывает, что требуются любые строки, которые не начинаются с символа ‘М’.
Если требуемая строка должна включать также служебный символ, используемый в качестве символа подстановки, то следует применить некоторый «escape»-символ, поместив его перед символом подстановки. Например, для проверки значений на соответствие строке ‘15%’ можно воспользоваться таким условием поиска:
LIKE ‘15#%’ ESCAPE ‘#’
ПРИМЕР
С помощью механизма поиска по шаблону, существующего в языке SQL, вывести код, серию и номер паспорта для лиц, проживающих в Днепропетровской области.
SELECT Code, Series, Number, IssuePlace
FROM PasportData
WHERE IssuePlace LIKE ‘%Днепропетровская область%’;
Результаты выполнения этого запроса представлены в таблице 11.16
Таблица 11.16.
Code |
Series |
Number |
IssuePlace |
3 |
АБ |
87134 |
Днепропетровская область, село Соленое |
7 |
АЗ |
43188 |
Днепропетровская область, г. Днепродзержинск |
12 |
ИК |
45190 |
Днепропетровская область, село Петропавловка |