Функции обработки данных SQL
Как и в большинстве языков программирования, в SQL существуют функции для обработки данных. Стоит отметить, что в отличие от SQL-операторов, функции не стандартизованы для всех видов СУБД, то есть для выполнения одних и тех же операции над данными, разные СУБД имеют свои собственные имена функций. Это означает, что код запроса написан в одной СУБД может не работать в другой, и это нужно учитывать в дальнейшем. Больше всего это касается функций для обработки текстовых значений, преобразования типов данных и манипуляций над датами.
Обычно СУБД поддерживается стандартный набор типов функций, а именно:
- Текстовые функции, которые используются для обработки текста (выделение части символов в тексте, определение длины текста, перевод символов в верхний или нижний регистр ...)
- Числовые функции. Используются для выполнения математических операций над числовыми значениями
- Функции даты и времени (осуществляют манипулирования датой и временем, рассчитывают период между датами, проверяют даты на корректность и т.п.)
- Статистические функции (для вычисления максимальных /минимальных значений, средних значений, подсчет количества и суммы ...)
- Системные функции (предоставляют разного рода служебную информацию о СУБД, пользователе и др..).
1. Функции SQL для обработки текста
Реализация SQL в СУБД Access имеет следующие функции для обработки текста:
Переведем названия товаров в верхний регистр с помощью функции UCase():
SELECT Product, UCase(Product) AS Product_UCase FROM Sumproduct
Выделим первые три символа в тексте с помощью функции LEFT():
SELECT Product, LEFT(Product, 3) AS Product_LEFT FROM Sumproduct
2. Функции SQL для обработки чисел
Функции обработки чисел предназначены для выполнения математических операций над числовыми данными. Эти функции предназначены для алгебраических и геометрических вычислений, поэтому они используются значительно реже функций обработки даты и времени. Однако числовые функции наиболее стандартизированными для всех версий SQL. Давайте взглянем на перечень числовых функций:
Мы привели лишь несколько основных функций, однако вы всегда можете обратиться к документации вашей СУБД, чтобы увидеть полный перечень функций, которые поддерживаются с их подробным описанием.
Например, напишем запрос для получения корня квадратного для чисел в столбце Amount с помощью функции SQR():
SELECT Amount, SQR(Amount) AS Amount_SQR FROM Sumproduct
3. Функции SQL для обработки даты и времени
Функции манипулирования датой и временем являются одними из важнейших и часто используемых функций SQL. В базах данных значения дат и времени хранятся в специальном формате, поэтому их невозможно использовать напрямую без дополнительной обработки. Каждая СУБД имеет свой набор функций для обработки дат, что, к сожалению, не позволяет переносить их на другие платформы и реализации SQL.
Список некоторых функций для обработки даты и времени в СУБД Access:
Посмотрим на примере как работает функция DatePart():
SELECT Date1, DatePart("m", Date1) AS Month1 FROM Sumproduct
Функция DatePart () имеет дополнительный параметр, который нам позволяет отобразить необходимую часть даты. В примере мы использовали параметр "m" , который отображает номер месяца (таким же образом мы можем отразить год - "yyyy" , квартал - "q ", день - " d ", неделю - " w ", час - " h ", минуты - "n" , секунды - "s" и т.д.).
4. Статистические функции SQL
Статистические функции помогают нам получить готовые данные без их выборки. SQL-запросы с этими функциями часто используются для анализа и создания различных отчетов. Примером таких выборок может быть: определение количества строк в таблице, получение суммы значений по определенному полю, поиск наибольшего /наименьшего или среднего значения в указанном столбце таблицы. Также отметим, что статистические функции поддерживаются всеми СУБД без особых изменений в написании.
Список статистических функций в СУБД Access:
Примеры использования функции COUNT():
SELECT COUNT(*) AS Count1 FROM Sumproduct - возвращает количество всех строк в таблице
SELECT COUNT(Product) AS Count2 FROM Sumproduct - возвращает количество всех непустых строк в поле Product
Мы намеренно удалили одно значение в столбце Product , чтобы показать разницу в работе двух запросов.
Примеры использования функции SUM():
SELECT SUM(Quantity) AS Sum1 FROM Sumproduct WHERE Month = 'April'
Данным запросу мы отразили общее количество проданного товара в апреле.
SELECT SUM(Quantity*Amount) AS Sum2 FROM Sumproduct
Как видим, в статистических функциях мы можем осуществлять вычисления над несколькими столбцами с использованием стандартных математических операторов.
Пример использования функции MIN():
SELECT MIN(Amount) AS Min1 FROM Sumproduct
Пример использования функции MAX():
SELECT MAX(Amount) AS Max1 FROM Sumproduct
Пример использования функции AVG():
SELECT AVG(Amount) AS Avg1 FROM Sumproduct