Как и в большинстве языков программирования, в SQL есть функции для обработки данных. Следует отметить, что в отличие от SQL-операторов, функции не являются стандартизированными для всех видов СУБД, то есть для выполнения одних и тех же операций над данными, разные СУБД имеют свои собственные названия функций. Это означает, что код запроса, написанный в одной СУБД, может не работать в другой, и это нужно учитывать в дальнейшем. Больше всего это касается функций обработки текстовых значений, преобразования типов данных и манипуляций над датами.
В большинстве СУБД поддерживается стандартный набор типов функций, а именно:
Реализация SQL в MS Access имеет следующие функции для обработки текста:
Функция | Описание |
---|---|
Left() | Отбор символов в тексте слева |
Right() | Отбирает символы в тексте справа |
Mid() | Отбор символов изнутри текста |
UCase() | Перевод символов в верхний регистр |
LCase() | Перевод символов в нижний регистр |
LTrim() | Удаляет все пустые символы слева от текста |
RTrim() | Удаляет все пустые символы справа от текста |
Trim() | Удаляет все пустые символы с обеих сторон текста |
Переведем названия товаров в верхний регистр с помощью функции UCase():
Run SQLSELECT Product, UCase(Product) AS Product_UCase
FROM Sumproduct
Выделим первые три символа в тексте с помощью функции LEFT():
Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT
FROM Sumproduct
Функции обработки чисел предназначены для выполнения математических операций над числовыми данными. Эти функции предназначены для алгебраических и геометрических вычислений, поэтому они используются гораздо реже функций обработки даты и времени. Однако числовые функции наиболее стандартизированы для всех версий SQL. Давайте посмотрим на список числовых функций:
Функция | Описание |
---|---|
SQR() | Возвращает квадратный корень указанного числа |
ABS() | Возвращает абсолютное значение числа |
EXP() | Возвращает экспоненту указанного числа |
SIN() | Возвращает синус указанного угла |
COS() | Возвращает косинус указанного угла |
TAN() | Возвращает тангенс указанного угла |
Мы привели лишь несколько основных функций, однако вы всегда можете обратиться к документации СУБД, чтобы просмотреть полный перечень функций, поддерживаемых с их подробным описанием.
Например, напишем запрос для получения квадратного корня для чисел в столбце Amount с помощью функции SQR():
Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR
FROM Sumproduct
Функции манипулирования датой и временами являются одними из самых важных и часто используемых функций SQL. В базах данных значения дат и времени сохраняются в специальном формате, поэтому невозможно использовать напрямую без дополнительной обработки. Каждая СУБД имеет свой набор функций для обработки дат, что не позволяет переносить их на другие платформы и реализации SQL.
Список некоторых функций для обработки даты и времени в MS Access:
Функция | Описание |
---|---|
DatePart() | Возвращает часть даты: год, квартал, месяц, неделя, день, час, минуты, секунды |
Year(), Month() | Возвращает год и месяц соответственно |
Hour(), Minute(), Second() | Возвращает час, минуты и секунды указанной даты |
WeekdayName() | Возвращает название дня недели |
Посмотрим на примере как работает функция DatePart():
SELECT Date1, DatePart("m", Date1) AS Month1
FROM Sumproduct
Функция DatePart() имеет дополнительный параметр, который позволяет отобразить необходимую часть даты. В примере мы использовали значение параметра "m", отображающего номер месяца (так же мы можем отразить год - "yyyy", квартал - "q", день - "d", неделю - "w", час - "h" , минуты - "n", секунды - "s" и т.д.).
Статистические функции помогают получить готовые данные без их выборки. SQL-запросы с этими функциями часто используются для анализа и создания различных отчетов. Примером таких выборок могут быть: определение количества строк в таблице, получение суммы значений по определенному полю, поиск наибольшего/наименьшего или среднего значения в указанном столбце таблицы. Также отметим, что статистические функции поддерживаются всеми СУБД без каких-либо особых изменений в написании.
Список статистических функций в СУБД Access:
Функция | Описание |
---|---|
COUNT() | Возвращает число строк в таблице или столбце |
SUM() | Возвращает сумму значений в столбце |
MIN() | Возвращает наименьшее значение в столбце |
MAX() | Возвращает наибольшее значение в столбце |
AVG() | Возвращает среднее значение в столбце |
Возвращает количество всех строк в таблице:
Run SQLSELECT COUNT(*) AS Count1
FROM Sumproduct
Возвращает количество всех пустых строк в поле Product:
SELECT COUNT(Product) AS Count2
FROM Sumproduct
Мы специально удалили одно значение в столбце Product, чтобы показать разницу в работе двух запросов.
Run SQLSELECT SUM(Quantity) AS Sum1
FROM Sumproduct
WHERE Month = 'April'
Данным запросом мы отразили общее количество проданного товара в апреле.
Run SQLSELECT SUM(Quantity*Amount) AS Sum2
FROM Sumproduct
Как видим, в статистических функциях мы также можем производить вычисления над несколькими столбцами с использованием стандартных математических операторов.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct