This is an old revision of the document!
Laborator 06 - Funcții SQL (I)
Funcții numerice
Descriere
Funcțiile pot fi văzute ca un operator de manipulare a datelor;
Acestea întotdeauna întorc un rezultat;
Argumentele unei funcții SQL pot fi constante, variabile sau nume de coloană;
Rolul lor este de a ușura anumite calcule în cadrul cererilor SQL.
Rol și clasificare
Funcții pentru valori numerice
Descriere
Aceste funcții acceptă la intrare valori numerice și returnează tot valori numerice;
Funcție | Descriere funcție |
sin(n) | Returnează sinus de n unde n este în radiani |
cos(n) | Returnează cosinus de n unde n este în radiani |
tan(n) | Returnează tangenta de n unde n este în radiani |
sinh(n) | Returnează sinus hiperbolic de n |
cosh(n) | Returnează cosinus hiperbolic de n |
stanh(n) | Returnează tangenta hiperbolică de n |
asin(n) | Returnează arcsinus de n |
acos(n) | Returnează arccosinus de n |
atan(n) | Returnează arctangenta de n |
Exemple
SIGN(n) – returnează
-1 dacă n<0
0 dacă n=0
1 dacă n>0
|
ABS(n) – returnează valoarea absolută a lui n
|
CEIL(n) – returnează cel mai mic întreg>=n
|
FLOOR(n) – returnează cel mai mare întreg⇐n
|
Mai multe exemple cu funcții trigonometrice:


EXP(n) – returnează e la puterea n
POWER(m,n) – returnează m la puterea n
SQRT(n) – returnează rădăcina pătrată a lui n

|
LN(n) – returnează logaritmul natural al lui n (n>0)
LOG(m,n) – returnează logaritmul în baza m a lui n
MOD(m,n) – returnează restul împărțirii lui m la n

|
ROUND(n[, m]) – returnează n rotunjit astfel:

|
TRUNC(n[, m]) – returnează n trunchiat astfel:

|
Funcții pentru șiruri de caractere
Descriere
Exemple
CHR(n) – returnează caracterul care are reprezentarea decimală n;
CONCAT(str1, str2) – returnează concatenarea lui str1 cu str2;
INITCAP(str) – returnează fiecare cuvânt din șirul de caractere str cu majuscule.
|

|
REPLACE(str, subStrOld, subStrNew) – înlocuiește în șirul de caractere str subșirul de caractere subStrOld cu subșirul de caractere subStrNew;
RPAD(str1, n[,str2]) – adaugă la dreapta lui str1 caracterele din str2 până la lungimea n iar dacă str2 lipseșe adaugă spațiu;
LPAD(str1, n[,str2]) – adaugă la stânga lui str1 caracterele din str2 până la lungimea n iar dacă str2 lipseșe adaugă spațiu;
RTRIM(str1[, str2]) – șterge din str1 ultimele caractere dacă sunt în str2.
|

|
SUBSTR(str, m[, n]) – returnează n caractere din str începând cu poziția m;
INSTR(str1, str2[, n[, m]]) – returnează poziția lui str2 în str1, începând cu poziția n, la a m-a apariție;
TRANSLATE(str1, from_str, to_str) – înlocuiește în șirul de caractere str1 toate aparițiile caracterelor din form_str cu caractereul corespondent din to_str (înlocuirea se face caracter cu caracter);
LENGTH(str) – returnează lungimea șirului de caractere str.
|

|
Funcții pentru date calendaristice
Descriere
Oracle stochează datele calendaristice în următorul format intern: Secol, An, Luna, Ziua, Ora, Minut, Secunda;
Formatul implicit de afișare pentru o dată calendaristică este ‘DD-MMM-YY’;
Intervalul datelor calendaristice este între 1-JAN-4712 BC și 31-DEC-4712 AD;
Toate funcțiile de tip dată calendaristică întorc o valoare de tip DATE, cu excepția funcției MONTHS_BETWEEN care întoarece o valoare numerică.
Funcțiile ROUND și TRUNC (la fel ca și funcțiile TO_DATE, TO_CHAR) recunosc mai multe tipuri de formatare, printre care:
CC, SCC – pentru secol
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y – pentru an
MONTH, MON, MM, RM – pentru lună
WW – ziua din săptămână în care este cuprinsă data care coincide cu prima zi a anului
W – ziua din săptămână în care este cuprinsă data care coincide cu prima zi a lunii
DDD, DD – prentru zi
DAY, DY, D – pentru prima zi din săptămână în care este cuprinsă data
HH, HH12, HH24 – pentru oră
MI – minute
SS - secunde
RR – formatul pentru an și secol
Formatul pentru an și secol (RR) variază în acord cu anul curent astfel:
Exemple
LAST_DAY(date) – returnează data ultimei zile din luna cuprinsă în date;
NEXT_DAY(date, str) – returnează data următoarei zile din săptămână dată de str, după data date;
ADD_MONTHS(date, n) – returnează o dată prin adăugarea a n luni la date.

MONTHS_BETWEEN(date1, date2) – returnează numărul de luni (și fracțiuni de luni) cuprinse între date1 și date2. Dacă date1>=date2 rezultatul va fi pozitiv, altfel negativ.

ROUND(date, format) – returnează data prin rotunjirea lui date la formatul format.

TRUNC(date, format) – returnează data prin trunchierea lui date la formatul format.

SYSDATE – returnează data curentă(data de sistem) în diferite formate
EXTRACT(part FROM date) – extrage partea part din dată date, returnează o valoare numerică/

Folosind operatorii aritmetici + și – se pot face diferite operații cu date calendaristice:
data + numar – adună un număr de zile la dată, returnând tot o dată calendaristică ;
data – numar – scade un număr de zile la dată, returnând tot o dată calendaristică ;
data1 – date2 – scade date2 din date1 , returnând numărul de zile ;
data – numar /24 – adună la dată un număr de ore, returnează tot o dată calendaristică.
|

|
ALTER SESSION SET NLS_DATE_FORMAT = new_format
