Laborator 06 - Funcții SQL (I)

Obiective

  • Funcții pentru valori numerice
  • Funcții pentru șiruri de caractere
  • Funcții pentru date calendaristice

Materiale ajutătoare

Funcții SQL

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
TANH(n) returnează tangenta hiperbolică de n
ASIN(n) returnează arcsinus de n
ACOS(n) returnează arccosinus de n
ATAN(n) returnează arctangenta de n
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

Exemple

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
Funcție Descriere funcție
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, strOld, strNew)înlocuiește în șirul de caractere str subșirul de caractere strOld cu subșirul de caractere strNew
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 caracterul corespondent din to_str (înlocuirea se face caracter cu caracter)
LENGTH(str) returnează lungimea șirului de caractere str

Exemple

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.
Funcție Descriere funcție
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ă

Exemple

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

Exercitiu individual

Pentru angajatii ce au numele de lungime 4, faceti o lista cu:

  • numele angajatului scris cu litere mari
  • ziua in care s-au angajat
  • denumirea departamentului in care lucreaza scrisa cu litere mici
  • initiala numelui sefului
bd/laboratoare/06.txt · Last modified: 2019/03/29 19:35 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