PROGRAMARE BAZE DE DATE ORACLE Capitolul 2 fileFUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA...

21
PROGRAMARE BAZE DE DATE ORACLE Capitolul 2 Prof. Cojocar-Horobăț Luminița

Transcript of PROGRAMARE BAZE DE DATE ORACLE Capitolul 2 fileFUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA...

PROGRAMARE BAZE DE DATE ORACLE

Capitolul 2

Prof. Cojocar-Horobăț Luminița

FUNCTII CARE FAC CONVERSII ASUPRA TIPURILOR DE LITERE DIN SIRURILE DE CARACTERE (CASE-MANIPULATION FUNCTIONS)

Aceste functii pot fi folosite in majoritatea clauzelor instructiunii SELECT.

1) LOWER(column|expression) converteste toate literele in litere mici

Exemplu

SELECT title

FROM d_cds

WHERE LOWER(title) = 'carpe diem';

FUNCTII CARE FAC CONVERSII ASUPRA TIPURILOR DE LITERE DIN SIRURILE DE CARACTERE

2) UPPER(column|expression) converteste toate literele in litere mari.

SELECT title

FROM d_cds

WHERE UPPER(title) = 'CARPE DIEM';

3) INITCAP( column|expression) converteste litera de inceput a

fiecarui cuvant in litera mare.

SELECT title

FROM d_cds

WHERE INITCAP(title) = 'Carpe Diem';

FUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA SIRURILOR DE CARACTERE (CHARACTER-MANIPULATION FUNCTIONS)

1) CONCAT – concateneaza doua siruri de caractere

Exemplu: CONCAT (‘Hello’, ‘World’) – rezultatul=HelloWorld

2) SUBSTR - extrage un subsir de o dimensiune specificata

Exemplu: SUBSTR (‘HelloWorld’, 1, 5) – rezultatul=Hello

3) LENGTH: returneaza o valoare numerica ce reprezinta lungimea unui sir de caractere

Exemplu: LENGTH (‘HelloWorld’) – rezultatul=10

4) INSTR: determina pozitia primei aparitii a unui caracter dat intr-un sir de caractere

Exemplu: INSTR (‘HelloWorld’, ‘W’) – rezultatul=6

FUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA SIRURILOR DE CARACTERE

5) LPAD: completeaza la afisare, cu un caracter dat, partea stanga a valorii de afisat, pe o anumita lungime.

Exemplu: LPAD (salary, 10,’*’) – rezultatul=*****24000

6) RPAD: completeaza la afisare, cu un caracter dat, partea dreapta a valorii de afisat, pe o anumita lungime.

Exemplu: RPAD (salary, 10, ‘*’) – rezultatul=24000*****

7) TRIM: Elimina toate caracterele specificate atat de la inceputul cat si de la sfarsitul unui sir de caractere (implicit se elimina si de la inceput si de la sfarsit). Sintaxa este urmatoarea:

trim ( [leading | trailing | both [character(s) to be removed ] from] string to trim)

Exemplu: TRIM (‘H’, FROM ‘HelloWorld’) – rezultatul=elloWorld

FUNCTII CARE REALIZEAZA DIVERSE OPERATII ASUPRA SIRURILOR DE CARACTERE

8) REPLACE: inlocuieste o secventa de caractere dintr-un string cu un alt

sir de caractere. Sintaxa este urmatoarea:

replace (string1, string_to_replace, [replacement_string] )

- string1 – sirul in care se face inlocuirea secventei de caractere

- string_to_replace – secventa de caractere ce va fi inlocuita

- [replacement_string] – sirul de caractere ce va inlocui secventa

Exemplu: REPLACE('JACK and JUE','J','BL') – rezultatul=BLACK and BLUE

FUNCȚII NUMERICE

Functiile numerice de tipul single-row pot avea ca parametri numere si furnizeaza ca rezultate valori numerice.

Cele trei functii numerice sunt urmatoarele:

ROUND

TRUNC

MOD

FUNCȚII NUMERICE

Functia ROUND

– este folosita pentru a rotunji numere la un numar specificat de

zecimale.

- functia poate rotunji numerele si in partea stanga a punctului zecimal. - functia poate fi folosita si cu date calendaristice.

Sintaxa:

ROUND(column|expression, decimal places)

Daca nu este specificat numarul de zecimale (decimal places) sau acesta este 0, numarul nu va avea zecimale.

FUNCȚII NUMERICE

Functia ROUND – exemple

ROUND(45.926) - rezultatul=46

ROUND(45.926, 0) – rezultatul=46

ROUND(45.926,2) - rezultatul=45.93

ROUND(45.926, -1) – rezultatul=50

ROUND(45.926,-2) – rezultatul=0

FUNCȚII NUMERICE

Functia TRUNC

- este folosita pentru a trunchia o valoare la un numar specificat de zecimale

- Daca numarul de zecimale nu este specificat, atunci implicit este considerat 0

- functia poate fi folosita si cu date calendaristice.

Sintaxa:

TRUNC(column|expression, decimal places)

FUNCȚII NUMERICE

Functia TRUNC – exemple

TRUNC(45.926) - rezultatul=45

TRUNC(45.926, 0) – rezultatul=45

TRUNC(45.926,2) - rezultatul=45.92

TRUNC(45.926, -1) – rezultatul=40

TRUNC(45.926,-2) – rezultatul=0

FUNCȚII NUMERICE

Functia MOD

- se foloseste pentru a determina restul impartirii a doua numere

intregi

Exemple:

1) MOD( 1600 / 300) – rezultatul este 100

2) SELECT last_name, salary, MOD(salary, 2) As "Mod Demo"

FROM f_staffs

WHERE staff_type IN(‘Order Taker’, ’Cook’, ‘Manager');

Coloana "Mod Demo“ indica daca salariul este numar par sau impar.

NUMBER FUNCTIONS

APLICATII

1. Sa se afiseze campurile last_name si salary pentru acei angajati

care lucreaza in departmentul 80. Sa se dea fiecarui angajat o crestere salariala de 5.33% iar rezultatul sa fie trunchiat la doua zecimale.

SELECT last_name, TRUNC(salary * .0533,2)

FROM employees

WHERE department_id = 80;

FUNCȚII NUMERICE

2. Folositi tabela DUAL pentru a realiza urmatoarele:

845.553 – rotunjit la o pozitie zecimala

30695.348 – rotunjit la doua pozitii zecimale

30695.348 - rotunjit cu -2 pozitii zecimale (cu 2 pozitii zecimale la stanga)

2.3454 – trunchierea lui 454 de pozitiile zecimale

FUNCȚII NUMERICE

SELECT round(845.553,1) FROM DUAL;

SELECT round(30695.348,2) FROM DUAL;

SELECT ROUND(30695.348,-2) FROM DUAL;

SELECT TRUNC(2.3454,1) FROM DUAL;

FUNCȚII PENTRU DATE CALENDARISTICE

- Formatul implicit pentru datele calendaristice este DD-MON-RR

Exemplu: 02-DEC-99

- Datele calendaristice sunt stocate intern in format numeric fiind reprezentate: secolul, anul, luna, ziua, orele, minutele si secundele. Aceasta reprezentare permite efectuarea de operatii aritmetice asupra datelor calendaristice.

- Datele calendaristice Oracle se regasesc in intervalul de valori: 1 ianuarie 4712 i.c. – 31 decembrie 9999 d.c.

- Atunci cand inseram intr-o tabela o inregistrare care are un camp de tip data calendaristica informatia cu privire la secol este preluata de la functia SYSDATE.

- SYSDATE este o functie pentru date calendaristice care ne furnizeaza data si ora curenta a serverului bazei de date Oracle

FUNCȚII PENTRU DATE CALENDARISTICE

Exemplu: pentru afisarea datei curente, se foloseste tabela DUAL

SELECT SYSDATE

FROM DUAL

- Tipul de date data calendaristica stocheaza intotdeauna anul sub forma a 4 cifre – 2 cifre pentru secol si 2 cifre pentru an

- Functii pentru date calendaristice: MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND, TRUNC. Inafara de funcia MONTHS_BETWEEN, toate celelate functii returneaza valori de tip data calendaristica.

- De asemenea, asupra datelor calendaristice se pot face operatii aritmetice

FUNCȚII PENTRU DATE CALENDARISTICE

EXEMPLE:

1) SELECT last_name, hire_date+60

FROM employees

2) SELECT last_name, (SYSDATE-hire_date)/7

FROM employees

3) SELECT order_no, amt_due, purch_date+30 “Due Date”

FROM dual

FUNCȚII PENTRU DATE CALENDARISTICE

MONTHS_BETWEEN – determina numarul de luni dintre 2 date calendaristice

ADD_MONTHS – aduna un anumit numar de luni la o data calendaristica

NEXT_DAY - returneaza data calendaristica corespunzatoare zilei din saptamana specificate, care urmeaza unei anumite date calendaristice

LAST_DAY – returneaza ultima zi a lunii corespunzatoare datei specificate

ROUND – rotunjeste o data calendaristica

TRUNC – trunchiaza o data calendaristica

FUNCȚII PENTRU DATE CALENDARISTICE

Exemple:

1) MONTHS_BETWEEN(’01-SEP-92’, ’01-JUN-91’) – rezultatul=15

2) ADD_MONTHS(’11-JAN-94’,6) – rezultatul este=’11-JUL-94’

3) NEXT_DAY(’01-SEP-95’,’FRIDAY’) – rezultatul este=’08-SEP-95’

4) LAST_DAY(’01-FEB-95’) – rezultatul este=’28-FEB-95’

Pentru urmatoarele exemple, presupunem ca SYSDATE=’25-JUL-95’

5) ROUND(SYSDATE,’MONTH’) – rezultatul este=’01-AUG-95’

6) ROUND(SYSDATE,’YEAR’) – rezultatul este=’01-JAN-96’

7) TRUNC(SYSDATE,’MONTH’) – rezultatul este=’01-JUL-95’

8) TRUNC(SYSDATE,’YEAR’) – rezultatul este=’01-JAN-95’

Bibliografie

https://academy.oracle.com