4. 11: Funkcije za rad sa stringovima, datumima, brojevima ...
Da se podsetimo prvo kakva su opšta sintaksna pravila u SQL-u:
- komande SQL-a se mogu pisati i velikim i malim slovima
- logički se komponente odvajaju zarezom
- bitno je kakvim slovima su zapisani podaci koji su u bazi podataka
- unosi se tačka-zarez na kraju iskaza (ovaj interpunkcijski znak govori SQL programu da je upit završen)
Funkcije
SQL podržava rad sa funkcijama. Najčešća podela SQL funkcija je
- Funkcije za rad sa stringovima
- Funkcije vezane za datum i vreme
- Numeričke ili aritmetičke funkcije,
- Agregatne funkcije
******************
LINK - gde možete videti koje sve fiunkcije možete da koristite u MySQL-u (MySQL Functions), ili kod druge verzije - koje sve funkcije postoje kod SQL Servera (SQL Server Functions),
Ovde radimo samo neke, a ostale pogledajte na linkovima gore
Pogledajte primere kako se koriste neke od ovih funkcija u video lekcijama koje slede iza ove lekcije
******************
Funkcije za rad sa stringovima
Postoji veliki broj ugrađenih funkcija za rukovanje stringovima. Ovde ćemo navesti samo neke:
SUBSTRING je funkcija koja kao rezultat vraća deo stringa koji prosledimo kao prvi parametar. Sintaksa je SUBSTRING(string, početak, dužina) gde je prvi parametar string. Drugi parametar označava poziciju u prvom parametru od koje počinje odsecanje karaktera, a treći parametar predstavlja dužinu željenog dela stringa koji smo prosledili kao prvi parametar.
Na osnovu opisanog ponašanja funkcije možemo zaključiti da je rezultat sledećeg upita:
niz karaktera efa.
LEFT i RIGHT su funkcije veoma
slične prethodnoj, razlika je u tome što se prilikom poziva izostavlja
parametar koji označava početak pošto je on podrazumevan. Dakle,
sintaksa je LEFT(string, dužina), odnosno RIGHT(string, dužina).
Funkcija LEFT vraća niz prvih n karaktera iz stringa, gde je n dužina
koju prosleđujemo kao drugi parametar. Analogno tome, funkcija RIGHT
vraća niz poslednjih n karaktera iz stringa, gde je n dužina koju
prosleđujemo kao drugi parametar.
Sledeća dva upita:
vraćaju KEF i ALO kao rezultate.
LTRIM i RTRIM su funkcije kojima se sa
početka ili kraja stringa uklanjaju prazna mesta. Sintaksa je veoma
jednostavna: LTRIM(string) i RTRIM(string).
REPLACE funkcijom se u okviru stringa jedan string menja drugim. Ukoliko ovo zvuči zbunjujuće, najbolje da prvo pogledamo sintaksu, a zatim i primer. Sintaksa je: REPLACE (osnovni string, string koji se menja, string koji je zamena). Dakle, u okviru osnovnog stringa se traži string koji želimo da zamenimo i menja se željenim stringom. Nakon primera će sve biti jasnije. Rezultat upita
SELECT REPLACE('SQLKEFALO','KEF','SMET'
je string SQLSMETALO.
Funkcijom UPPER se mala slova u stringu pretvaraju u velika, dok se funkcijom LOWER velika slova pretvaraju u mala. Sintaksa je u ovom slučaju veoma jednostavna: UPPER(string) i LOWER(string).
SPACE funkcija kao rezultat vraća onoliko praznih mesta koliko prosledimo kao parametar. Sintaksa je SPACE(broj) gde parametar broj predstavlja praznih mesta.
CONCAT funkciju koristimo za povezivanje 2 ili više niza karaktera u jedan niz (string). To postižemo sintaksom: CONCAT(string1, string2, string3 … stringN), gde svaki od parametara predstavlja niz karaktera. Neophodno je proslediti najmanje 2 parametra, u suprotnom će se javiti greška. Pre povezivanja parametara, vrši se njihova implicitna konverzija u string. NULL vrednosti se implicitno konvertuju u prazan string.
Numeričke funkcije:
dostupne su osnovne aritmetičke operacije: sabiranje, oduzimanja, množenje i deljenje. Tako na primer, ako izvršimo upit SELECT 10+20; , dobićemo rezultat 30. Pored ovih osnovnih aritmetičkih operacija, postoji i funkcija MOD() čijom se upotrebom dobija ostatak pri deljenju dva broja.
Neke od numeričkih funkcija koje se najčešće koriste su:
- SIGN() – vraća znak broja
- ABS() – vraća apsolutnu vrednost broja
- LOG10() – izračunava logaritam osnove 10 nekog broja
- LOG() – izračunava prirodni logaritam nekog broja
- POW() ili POWER() – koristi se za stepenovanje brojeva
- SQRT() – vraća koren broja
- SIN(), COS(), TAN() – izračunavaju sinus, kosinus i tangens broja
- ASIN(), ACOS(), ATAN() - izračunavaju arkus sinus, arkus kosinus i arkus tangens broja
- DEGREES() – prevodi radijane u stepene
- RADIANS() – prevodi stepene u radijane
- ROUND() – funkcija zaokruživanja
Funkcije vezane za datum i vreme
Imamo skup veoma korisnih funkcija za rad sa datumom i tačnim vremenom. Neke od njih su:
- DAYOFWEEK() – vraća indeks dana u sedmici. Prvi dan u sedmici je nedelja sa indeksom 1, a poslednji dan u sedmici je subota sa indaksom 7.
- WEEKDAY() – kao i DAYOFWEEK vrača indeks dana u sedmici, s tim što je ovde prvi dan u sedmici ponedeljak sa indeksom 0, a poslednji dan u sedmici je nedelja sa indeksom 6.
- DAYOFMONTH() – vraća indeks dana u mesecu, koji je u opsegu od 1 do 31.
- DAYOFYEAR() – vraća indeks dana u godini, koji je u opsegu od 1 do 366.
- DAYNAME() – vraća naziv dana u sedmici za konkretan datum.
- MONTH() – vraća redni broj meseca u godini za konkretan datum.
- MONTHNAME() – vraća naziv meseca za konkretan datum.
- WEEK() – vraća redni broj sedmice u godini za konkretan datum.
- HOUR(), MINUTE(), SECOND() – vraćaju sate, minute i sekunde za konkretno vreme
- DATE_ADD() – sabira zadati datum sa nekim vremenskim intervalom.
- DATE_SUBB() – oduzima od zadatog datuma neki vremenski interval.
- CURDATE() – vraća važeći datum u formatu YYYY-MM-DD.
- CURTIME() – vraćaju tačno vreme u formatu HH:MM:DD.
Pogledajte primere kako se koriste neke od ovih funkcija u video lekcijama koje slede iza ove lekcije
Za agregatne funkcije pogledajte sledeće:
Funkcije agregacije
Kao posebnu kategoriju obično se izdvajaju funkcije koje obavljaju agregaciju, mada se one mogu shvatiti i kao kombinacija znakovnih i matematičkih funkcija. Funkcije agregacije su dobile naziv po tome što vrše agregaciju rezultata upita. Korišćenje ovih funkcija je jednostavno, pošto se navode u listi kolona SELECT klauzule koje se prikazuju. U najosnovnijem obliku agregatne funkcije vraćati će skalarnu vrijednost, a sintaksa je sledeća:
SELECT AgregatnaFunkcija(atribut) FROM tabela
Korišćenje ovih funkcija je jednostavno, pošto se navode u listi kolona SELECT klauzule koje se prikazuju.
Najčešće se koriste:
Daćemo dva primera za ilustraciju funkcija agregacije
1. Napiši upit koji određuje maksimalnu, minimalnu, prosečnu i ukupnu platu svih radnika:
SELECT MAX(Plata) AS MaxPlata,
MIN(Plata) AS MinPlata,
AVG(Plata) AS ProsPlata,
SUM(Plata) AS UkPlata
FROM RADNIK;
Pr 2. Pomoću funkcije COUNT odredi broj vrsta u rezultujućoj tabeli.
SELECT COUNT(*) AS PlataSaBonusom
FROM RADNIK;
******************
pogledajte prezentaciju / pdf - Agregatne funkcije
******************
LINK - gde možete videti koje sve fiunkcije možete da koristite u MySQL-u (MySQL Functions), ili kod druge verzije - koje sve funkcije postoje kod SQL Servera (SQL Server Functions),
Ovde radimo samo neke, a ostale pogledajte na linkovima gore
Pogledajte primere kako se koriste neke od ovih funkcija u video lekcijama koje slede iza ove lekcije
******************