Функции манипулирования данными в SQL
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() Возвращает абсолютное значение числа
Рекомендуем посмотреть лекцию "Гипертекстовые ссылки: типы, URL, создание".
COS() Возвращает косинус указанного угла
EXP() Возвращает экспоненту указанного числа
PI() Возвращает значение числа пи
SIN() Возвращает синус указанного угла
SQRT() Возвращает квадратный корень указанного числа
TAN() Возвращает тангенс указанного угла



















