Ca în majoritatea limbajelor de programare, SQL are funcții pentru procesarea datelor. Este de remarcat faptul că, spre deosebire de instrucțiunile SQL, funcțiile nu sunt standardizate pentru toate tipurile de SGBD, adică pentru a efectua aceleași operațiuni asupra datelor, diferite SGBD-uri au propriile nume de funcție. Aceasta înseamnă că codul de interogare scris într-un SGBD poate să nu funcționeze în altul, iar acest lucru trebuie luat în considerare în viitor. Acest lucru se aplică în principal funcțiilor pentru procesarea valorilor textului, conversia tipurilor de date și manipularea datelor.
Majoritatea SGBD-urilor acceptă un set standard de tipuri de funcții, și anume:
Implementarea SQL în MS Access are următoarele funcții pentru procesarea textului:
Funcţie | Descriere |
---|---|
Left() | Selectează caracterele din text din stânga |
Right() | Selectează caracterele din textul din dreapta |
Mid() | Selectează caractere din mijlocul textului |
UCase() | Convertește caracterele în majuscule |
LCase() | Convertește caracterele în minuscule |
LTrim() | Elimină toate caracterele goale din stânga textului |
RTrim() | Elimină toate caracterele goale din dreapta textului |
Trim() | Elimină toate caracterele goale de pe ambele părți ale textului |
Să convertim numele produselor în majuscule folosind funcția UCase():
Run SQLSELECT Product, UCase(Product) AS Product_UCase
FROM Sumproduct
Să evidențiem primele trei caractere din text folosind funcția LEFT():
Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT
FROM Sumproduct
Funcțiile de procesare a numărului sunt concepute pentru a efectua operații matematice pe date numerice. Aceste funcții sunt concepute pentru calcule algebrice și geometrice, deci sunt utilizate mult mai rar decât funcțiile de procesare a datei și orei. Cu toate acestea, funcțiile numerice sunt cele mai standardizate în toate versiunile de SQL. Să ne uităm la lista de funcții numerice:
Funcţie | Descriere |
---|---|
SQR() | Returnează rădăcina pătrată a numărului specificat |
ABS() | Returnează valoarea absolută a unui număr |
EXP() | Returnează exponentul numărului specificat |
SIN() | Returnează sinusul unghiului specificat |
COS() | Returnează cosinusul unghiului specificat |
TAN() | Returnează tangenta unghiului specificat |
Am enumerat doar câteva dintre caracteristicile principale, dar puteți oricând să consultați documentația DBMS pentru o listă completă a caracteristicilor acceptate cu descrieri detaliate.
De exemplu, să scriem o interogare pentru a obține rădăcina pătrată a numerelor din coloana Sumă folosind funcția SQR():
Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR
FROM Sumproduct
Funcțiile de manipulare a datei și orei sunt printre cele mai importante și utilizate frecvent funcții SQL. În bazele de date, valorile datei și orei sunt stocate într-un format special, astfel încât nu pot fi utilizate direct fără procesare suplimentară. Fiecare SGBD are propriul set de funcții pentru procesarea datelor, ceea ce, din păcate, nu permite transferul acestora pe alte platforme și implementări SQL.
Lista unor funcții pentru gestionarea datei și orei în MS Access:
Funcţie | Descriere |
---|---|
DatePart() | Returnează o parte dintr-o dată: an, trimestru, lună, săptămână, zi, oră, minut, secundă |
Year(), Month() | Returnează anul și respectiv luna |
Hour(), Minute(), Second() | Returnează ora, minutele și secundele datei specificate |
WeekdayName() | Returnează numele zilei săptămânii |
Să ne uităm la un exemplu despre cum funcționează funcția DatePart():
SELECT Date1, DatePart("m", Date1) AS Month1
FROM Sumproduct
Funcția DatePart() are un parametru suplimentar care ne permite să afișăm partea necesară a datei. În exemplu, am folosit valoarea parametrului "m", care afișează numărul lunii (în același mod, putem afișa anul - "aaaa", trimestrul - "q", ziua - "d", săptămâna - "w", ora - "h", minutele - "n", secundele - "s", etc.).
Funcțiile statistice ne ajută să pregătim date fără a le eșantiona. Interogările SQL cu aceste funcții sunt adesea folosite pentru a analiza și genera diferite rapoarte. Un exemplu de astfel de selecții poate fi: determinarea numărului de rânduri dintr-un tabel, obținerea sumei valorilor pentru un anumit câmp, căutarea celei mai mari/mai mici sau a valorii medii în coloana specificată a tabelului. De asemenea, menționăm că funcțiile statistice sunt acceptate de toate SGBD fără modificări speciale în scris.
Lista funcțiilor statistice din DBMS Access:
Funcţie | Descriere |
---|---|
COUNT() | Returnează numărul de rânduri dintr-un tabel sau coloană |
SUM() | Returnează suma valorilor dintr-o coloană |
MIN() | Returnează cea mai mică valoare dintr-o coloană |
MAX() | Returnează cea mai mare valoare dintr-o coloană |
AVG() | Returnează valoarea medie într-o coloană |
Returnează numărul tuturor rândurilor din tabel:
Run SQLSELECT COUNT(*) AS Count1
FROM Sumproduct
Returnează numărul tuturor rândurilor nevide din câmpul Produs:
SELECT COUNT(Product) AS Count2
FROM Sumproduct
Am eliminat în mod intenționat o valoare din coloana Produs pentru a arăta diferența de performanță dintre cele două interogări.
Run SQLSELECT SUM(Quantity) AS Sum1
FROM Sumproduct
WHERE Month = 'April'
Cu această solicitare am afișat cantitatea totală de mărfuri vândute în luna aprilie.
Run SQLSELECT SUM(Quantity*Amount) AS Sum2
FROM Sumproduct
După cum puteți vedea, în funcțiile statistice putem efectua și calcule pe mai multe coloane folosind operatori matematici standard.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct