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țiile se pot folosi pentru:
    • Efectuarea calculelor numerice
    • Prelucrarea de șiruri de caractere
    • Prelucrarea datelor calendaristice
    • Schimbarea formatului datelor pentru afișare
    • Conversia tipurilor de date
  • Funcțiile se împart în următoarele categorii:
    • Funcții numerice
    • Funcții pentru șiruri de caractere
    • Funcții pentru date calendaristice
    • Funcții de conversie
    • Funcții de diverse (care acceptă orice tip de argument)
    • Funcții de grup

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

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:

  • m zecimale dacă m>0
  • 0 dacă m este omis
  • m cifre înainte de virgulă dacă m<0

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

  • m zecimale dacă m>0
  • 0 dacă m este omis
  • m cifre înainte de virgulă dacă m<0

Funcții pentru șiruri de caractere

Descriere

  • Funcțiile pentru șiruri de caractere acceptă ca parametri valori alfanumerice și returnează tot o valoare alfamumerică.
  • Funcțiile care acceptă valori de tip:
    • VARCHAR2 pot avea lungimea maximă de 4000 de caractere
    • CHAR pot avea lungimea maximă de 255

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

Variție An

Variție An

Formatul pentru an și secol (RR) variază în acord cu anul curent astfel:

  • Anul curent este între 0 și 49:
    • Dacă ultimele 2 caractere pentru an sunt între 0 și 49 atunci data întoarsă pentru an este în secolul curent;
    • Dacă ultimele 2 caractere pentru an sunt între 50 și 99 atunci data întoarsă pentru an este în secolul anterior celui curent.
  • Anul curent este între 50 și 90:
    • Dacă ultimele 2 caractere pentru an sunt între 0 și 49 atunci data întoarsă pentru an este în secolul după cel curent;
    • Dacă ultimele 2 caractere pentru an sunt între 50 și 99 atunci data întoarsă pentru an este în secolul curent.

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ă.





  • Pentru a schimba formatul datei la nivel de sesiune trebuie să se modifice parametrul de sistem NLS_DATE_FORMAT
  • Pentru a modifica acest parametru la nivel de sesiune se utilizeaza următoarea comandă:
ALTER SESSION SET NLS_DATE_FORMAT = new_format


bd/laboratoare/06.1553339700.txt.gz · Last modified: 2019/03/23 13:15 by iulia.radulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0