Использование функций манипулирования данными
8. Использование функций манипулирования данными
Язык SQL поддерживает использование функций для манипулирования данными. Функции – это операции, которые производятся над данными. В разных СУБД реализация функций может значительно отличаться. В качестве примера можно привести две функции:
1. Выборка части строки – Access – MID(), MySQL, MS SQL – SUBSTRING(), Oracle – SUBSTR();
2. Получение текущей даты – Access – NOW(), MySQL – CURDATE(), MS SQL – GETDATE(), Oracle – SYSDATE.
Это может привести к тому, что код для одной реализации может не работать в другой. Поэтому программисты стараются писать переносимый код, хотя это может ухудшать приложения с точки зрения производительности.
В большинстве реализаций SQL поддерживаются следующие типы функций:
· Текстовые функции – используются для управления текстовыми строками, например, для обрезания или заполнения значений, преобразование значений из одного регистра в другой.
· Числовые функции – используются для выполнения математических операций над числовыми данными, например, вычисление абсолютной величины, алгебраических вычислений.
· Функции даты и времени – используются для управления значениями даты и времени, для выборки отдельных частей этих значений, например, проверка даты на корректность, вычисления разницы между датами.
Рекомендуемые материалы
· Системные функции – используются для системных нужд СУБД, например, возвращают регистрационную информацию пользователя.
8.1. Функции манипулирования текстом
Мы рассматривали функции TRIM(), RTRIM(), LTRIM(). Рассмотрим еще одну функцию UPPER() (в Access – UCASE) – преобразование текста в верхний регистр.
SELECT vend_name, UCASE (vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;
--------------------------
vend_name vend_name_upcase
Bear Emporium BEAR EMPORIUM
Beras R Us BERAS R US
Doll House Inc. DOLL HOUSE INC.
Fun and Games FUN AND GAMES
Furball Inc. FURBALL INC.
Jouets et ours JOUETS ET OURS
Еще некоторые функции:
LOWER() (LCASE) - преобразует строку в нижний регистр;
LEFT() - возвращает символы из левой части строки;
LENGTH() (LEN()) - возвращает длину строки.
8.2. Функции манипулирования датой и временем
Дата и время хранятся в таблицах с использованием соответствующих типов данных. Каждая СУБД использует собственные типы данных. Значение даты и времени хранятся в специальном формате и поэтому их можно быстро и эффективно хранить, фильтровать. Но использовать в приложениях в формате, котором они хранятся, неудобно. Поэтому в СУБД всегда используются функции манипулирования датой и временем. К сожалению, эти функции меньше всего поддаются переносу на другие платформы и реализации SQL.
В примере из таблицы заказы необходимо извлечь список всех заказов, сделанных в 2004 году.
SELECT order_num
FROM Orders
WHERE DATEPART(‘yyyy’, order_date) = 2004;
--------------------------
order_num
20005
20006
20007
20008
20009
Используем функцию DATEPART(‘yyyy’, order_date), которая возвращает только часть даты и имеет два параметра: часть, подлежащая возвращению, и дата, из которой эта часть возвращается. Из столбца order_date возвращается только год.
В MySQL можно использовать функцию YEAR() для выборки значения года.
SELECT order_num
FROM Orders
WHERE YEAR( order_date) = 2004;
Функции манипулирования датой и временем различны для разных СУБД и, прежде чем их использовать, надо обратиться к документации.
8.3. Функции манипулирования числами
Эти функции используются только для алгебраических и других вычислений. В большинстве СУБД эти функции стандартизированы.Примерами таких функций являются:
ABS() Возвращает абсолютное значение числа
Рекомендуем посмотреть лекцию "6 Гипертекстовые ссылки".
COS() Возвращает косинус указанного угла
EXP() Возвращает экспоненту указанного числа
PI() Возвращает значение числа пи
SIN() Возвращает синус указанного угла
SQRT() Возвращает квадратный корень указанного числа
TAN() Возвращает тангенс указанного угла