Sunteți pe pagina 1din 12

Functii

Tipuri de funcii
Funciile Oracle sunt mprite astfel: Funcii singulare acestea opereaz la un moment dat asupra unei singure nregistrri. Aceste funcii vor fi discutate n acest capitol Funciile de grup opereaz asupra unui grup de nregristrri i returneaz o singur singur valoare pentru ntregul grup. Funciile singulare pot fi folosite n: clauza SELECT, pentru a modifica modul de afiare a datelor, pentru a realiza diferite calcule etc. clauza WHERE, pentru a preciza mai exact care sunt nregistrrile ce se afieaz clauza ORDER BY Funciile singulare (single-row functions) pot fi la rndul lor mprite n: Funcii care opereaz asupra irurilor de caractere Funcii numerice Funcii pentru manipularea datelor calendaristice Funcii de conversie care convertesc datele dintr-un tip n altul Funcii de uz general. Unele funcii, precum TRUNC i ROUND pot aciona asupra asupra mai multor tipuri de date, dar cu semnificaii diferite.

Tabela DUAL

Aceast tabela este una special, care conine o singur coloan numit DUMMY i o singur linie Tabela DUAL se folosete atunci cnd realizm calcule, sau evalum expresii care nu deriv din nici o tabel anume. Fie de exemplu comanda SELECT (5*7-3)/2 FROM DUAL; Expresia evaluat n aceast comand nu are n componen nici o coloan a vreunei tabele, motiv pentru care este nevoie s apelm la tabela DUAL. Putem privi tabela DUAL ca pe o variabil n care memorm rezultatele calculelor noastre.

Funcii asupra irurilor de caractere


irurile de caractere pot conine orice combinaie de litere, numere, spaii, i alte simboluri, precum semne de punctuaie, sau caractere speciale. n Oracle exist dou tipuri de date pentru memorarea irurilor de caractere: CHAR pentru memorarea irurilor de caractere de lungime fix VARCHAR2 pentru memorarea irurilor de caractere avnd lungime variabil. LOWER(sir) convertete caracterele alfanumerice din ir n litere mari. UPPER(sir) convertete caracterele alfanumerice din ir n litere mici. INITCAP(sir) convertete la majuscul prima liter din fiecare cuvnt al irului. Cuvintele sunt iruri de litere separate prin orice caracter diferit de liter. Literele din interiorul cuvntului care erau scrise cu majuscule vor fi transformate n litere mici. 1)SELECT LOWER('abc123ABC') FROM DUAL; Rezultat: abc123abc 2)SELECT UPPER('abc123ABC') FROM DUAL; Rezultat: ABC123ABC 3)SELECT INITCAP('aBc def ghi') FROM dual; Rezultat Abc Def Ghi

CONCAT(sir1, sir2) concateneaz dou iruri de caractere SELECT CONCAT('abc','def') FROM dual; SUBSTR(sir,poz,nr) extrage din sir cel mult nr caractere ncepnd din poziia poz.

Observaii

dac din poziia poz pn la sfritul irului sunt mai puin de nr caractere, se vor extrage toate caracterele de la poziia poz pn la sfritul irului. parametrul poz poate fi i o valoare negativ, ceea ce nseamn c poziia de unde se va ncepe extragerea caracterelor din ir se va determina numrnd caracterele din ir de la dreapta spre stnga (vezi ultimele 3 exemple de mai jos) dac nr nu este specificat, se va returna subirul ncepnd cu caracterul de pe poziia poz din ir pn la sfritul irului.

exemple
select substr('abcdef',3,2) from dual select substr('abcdef',3,7) from dual select substr('abcdef',3) from dual select substr('abcdef',7,3) from dual select substr('abcdef',-4,2) from dual select substr('abcdef',-4,7) from dual select substr('abcdef',-10,5) from dual

INSTR(sir,subsir,poz,k

INSTR(sir,subsir,poz,k) returneaz poziia de nceput a celei de a k-a apariii a subirului subsir n irul sir, cutarea fcndu-se ncepnd cu poziia poz . Dac parametrii poz i k lipsesc, atunci se va returna poziia primei apariii a subirului subsir n ntregul ir sir. Poziia de unde ncepe cutarea poate fi precizat i relativ la sfritul irului, ca i n cazul funciei substr, dac parametrul poz are o valoare negativ.

Exemple
Select instr('abcdabcdabc','cd') from dual Select instr('abcd','ef') from dual select instr('abcd','bce') from dual Select instr('ababababababab','ab',4,2) from dual select instr('abababababab','ab',-4,1) from dual

LENGTH(sir) returneaz numrul de caractere din irul sir. LPAD(sir1,nr,sir2) completeaz irul sir1 la stnga cu caracterele din irul sir2 pn ce irul obinut va avea lungimea nr. !!! Dac lungimea irului sir1 este mai mare dect nr, atunci funcia va realiza trunchierea irului sir1, tergndu-se caracterele de la sfritul irului. select lpad('abcd',3,'*') from dual abc select lpad('abcd',10,'*.') from dual *.*.*.abcd select lpad('abc',10,'*.) from dual *.*.*.*abc select lpad('abc',5,'xyzw') from dual xyabc

RPAD(sir,nr,subsir) similar cu funcia LPAD, completarea fcndu-se la dreapta. TRIM(LEADING ch FROM sir) TRIM(TRAILING ch FROM sir) TRIM(BOTH ch FROM sir) TRIM(sir) TRIM(ch FROM sir) funcia TRIM terge caracterele ch de la nceputul(leading), sfritul(trailing) sau din ambele pri ale irului sir. n ultimele dou formate ale funciei este subneleas opiunea BOTH. dac ch nu este specificat se vor elimina spaiile inutile de la nceputul, sfritul sau din ambele pri ale irului sir.

exemple
Select trim(leading 'a' from 'aaxaxaa') from dual xaxaa select trim(trailing 'a' from 'aaxaxaa') from dual aaxax select trim(both 'a' from 'aaxaxaa') from dual xax select trim('a' from 'aaxaxaa') from dual xax select '*'||trim(' abc ')||'* from dual *abc*

REPLACE(sir,subsir,sirnou) - nlocuiete toate apariiile subirului subsir din irul sir cu irul sirnou. !!!!Dac nu este specificat noul ir, toate apariiile subirului subsir se vor elimina. select replace('abracadabra','ab','xy') from dual xyracadxyra select replace('abracadabra','ab','xyz') from dual xyzracadxyzra select replace('abracadabra','a') from dual brcdbr

S-ar putea să vă placă și