Як і в більшості мов програмування, в 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