- •2. Функции обработки значений
- •2.1. Строковые функции
- •2.2. Числовые функции
- •2.3. Функции даты-времени
- •3. Вычисляемые выражения
- •4. Условные выражения с оператором case
- •4.1. Оператор case со значениями
- •4.2. Оператор case с условиями поиска
- •4.3. Функции nullif и coalesce
- •Заполнить в тетради!!!
2.3. Функции даты-времени
В языке SQL имеются три функции, которые возвращают текущие дату и время.
- CURRENT_DATE - возвращает текущую дату (тип date).
- CURRENT_TIME(число) - возвращает текущее время (тип time). Целочисленный параметр указывает точность представления секунд. Например, при значении 2 секунды будут представлены с точностью до сотых (две цифры в дробной части): 12:39:45.27.
- CURRENT_TIMESTAMP(число) - возвращает дату и время (тип timestamp). Например, 2005-06-18 12:39:45.27. Целочисленный параметр указывает точность представления секунд.
Обратите внимание, что дата и время, возвращаемые этими функциями, имеют не символьный тип. Если требуется представить их в виде символьных строк, то для этого следует использовать функцию преобразования типа cast ().
Функции даты-времени обычно применяются в запросах на вставку, обновление и удаление данных. Например, при записи сведений о продажах в специально предусмотренный для этого столбец вносятся текущие дата и время. После подведения итогов за месяц или квартал, данные о продажах за отчетный период можно удалить.
3. Вычисляемые выражения
Вычисляемые выражения строятся из констант (числовых, строковых, логических), функций, имен полей и данных других типов путем соединения их арифметическими, строковыми, логическими и другими операторами. В свою очередь, выражения могут быть объединены посредством операторов в более сложные (составные) выражения. Для управления порядком вычисления выражений используются круглые скобки.
Арифметические операторы:
+ сложение;
- вычитание;
* умножение;
/ деление.
Строковый оператор только один - оператор конкатенации или склейки строк (| |). В некоторых реализациях SQL (например, в Microsoft Access) вместо (| |) используется символ (+). Оператор конкатенации приписывает вторую строку к концу первой.
При составлении выражений необходимо следить, чтобы операнды операторов имели допустимые типы.
Например, выражение:
123+'Саша' недопустимо, поскольку арифметический оператор сложения применяется к строковому операнду.
Вычисляемые выражения могут находиться после оператора SELECT, а также в выражениях условий операторов WHERE и HAVING.
Рассмотрим несколько примеров.
1. Пусть таблица Продажи содержит столбцы Тип_товара, Количество и Цена, а нам требуется знать выручку для каждого типа товара. Для этого достаточно в список столбцов после оператора SELECT включить выражение Количество*Цена:
SELECT Тип_товара, Количество, Цена, Количество*Цена AS Итого FROM Продажи;
З
десь
используется ключевое слово AS
(как)
для задания псевдонима столбца с
вычисляемыми данными.
На рис. показаны исходная таблица продажи и результатная таблица запроса.
Если требуется узнать общую выручку от продажи всех товаров, то достаточно применить следующий запрос:
SELECT SUM(Количество*Цена) FROM Продажи;
2. Следующий запрос содержит вычисляемые выражения и в списке столбцов, и в условии оператора WHERE. Он выбирает из таблицы продажи те товары, выручка от продажи которых больше 1000:
SELECT Тип_товара, Количество*Цена AS Итого FROM Продажи
WHERE Количество*Цена > 1000;
Предположим, что требуется получить таблицу, в которой два столбца:
Товар, содержащий тип товара и цену;
Итого, содержащий выручку.
П
оскольку
предполагается, что в исходной таблице
продажи столбец Тип_товара является
символьным (тип char),
а
столбец цена - числовой, то при объединении
(склейке) данных из этих столбцов
необходимо выполнить приведение
числового типа к символьному с помощью
функции cast
().
Запрос, выполняющий это задание,
выглядит так:
SELECT Тип_товара || ' (Цена: ' || CAST(Цена AS CHAR(5)) || ')' AS Товар, Количество*Цена AS Итого FROM Продажи;
Примечание
В Microsoft Access аналогичный запрос будет иметь следующий вид:
SELECT Тип_товара + ' (Цена: ' + CStr(Цена) + ')' AS Товар, Количество*Цена AS Итого FROM Продажи;
