- •Содержание
- •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.9. Использование функции cast.
Иногда возникает потребность трактовать значение одного типа как значение другого типа. Например, использовать числовое значение как символьную строку или наоборот. В этом случае применяют функцию
CAST (<значение> AS <тип данных>)
Функция CAST делает копию значения, преобразуя его к указанному типу данных. При этом не следует забывать о множестве типов данных, в которое может быть преобразовано данное значение:
Тип данных |
Можно привести к типам |
NUMERIC |
CHARACTER, DATE |
CHARACTER |
NUMERIC, DATE |
DATE |
CHARACTER, NUMERIC |
ПРИМЕР
Выбрать коды, серии и номера паспортов, в номерах которых встречается число 84.
SELECT Code, Series, Number
FROM PasportData
WHERE CAST(Number AS CHAR(5)) LIKE ‘%84%’;
Результаты выполнения этого запроса представлены в таблице 11.17
Таблица 11.17.
Code |
Series |
Number |
11 |
ИК |
10842 |
11.5.10. Использование значения null в условиях поиска.
Если требуется выдать все записи, в которых некоторый столбец (или результат вычисления выражения) имеет значение NULL, достаточно в условии поиска указать
<значение> IS [NOT] NULL
ПРИМЕР
Выбрать коды и названия книг, у которых не указаны УДК.
SELECT Code, Namer
FROM Books
WHERE UDK IS NULL;
Результаты выполнения этого запроса представлены в таблице 11.18
Таблица 11.18.
Code |
Name |
1 |
Автоматизация производственных процессов на обогатительной фабрике |
2 |
Решение задач по автоматизации процессов обогащения и металлургии |
3 |
Асимтотические методы оптимального управления |
4 |
Синтез оптимальных автоматических ситем |
5 |
Методы оптимизации стохастических систем |
6 |
Автоматизированные системы управления технологическим процессом обогащения руды |
Контрольные вопросы:
Как в SQL происходит расчет результирующих столбцов на основе арифметических выражений?
Перечислите известные Вам агрегатные функции. Что выполняет каждая из них?
Как выдать агрегированные значения не по всему результирующему набору данных, а по каждой из входящих в него групп записей, характеризующихся одинаковым значением какого-либо столбца?
Какое предложение используется в предложение GROUP BY, если нужно в результирующем НД выдавать агрегацию не по всем группам, а только по тем из них, которые отвечают некоторому условию?
Чем условие в HAVING отличается от условия в WHERE?
С помощью каких логических функций могут быть построены более сложные условия поиска?
Как указать в условие поиска, что некоторое значение (столбец или вычисление значения выражения) должно находиться в интервале между двумя значениями?
Что необходимо указать в условии поиска, чтобы значение какого-либо символьного столбца или выражения включало в себя (неважно, начиная с какого символа) определенную подстроку?
Для чего в условиях поиска используется функция UPPER(<значение>)?
Какое предложение задает шаблоны сравнения строковых значений?
Какие специальные символы используются в шаблоне сравнения строковых значений?
Какая функция делает копию значения, преобразуя его к указанному типу данных?
Что достаточно указать в условии поиска, при необходимости выдачи всех записей, в которых некоторый столбец (или результат вычисления выражения) имеет значение NULL?