CATEGORII DOCUMENTE |
Sirurile de caractere pot contine orice combinatie de litere, numere, spatii, si alte simboluri, precum semne de punctuatie, sau caractere speciale. In Oracle exista doua tipuri de date pentru memorarea sirurilor de caractere:
CHAR - pentru memorarea sirurilor de caractere de lungime fixa
VARCHAR2 - pentru memorarea sirurilor de caractere avand lungime variabila.
LOWER(sir) - converteste caracterele alfanumerice din sir in litere mari.
UPPER(sir) - converteste caracterele alfanumerice din sir in litere mici.
INITCAP(sir) - converteste la majuscula prima litera din fiecare cuvant al sirului. Cuvintele sunt siruri de litere separate prin orice caracter diferit de litera. Literele din interiorul cuvantului care erau scrise cu majuscule vor fi transformate in litere mici.
Exemplu |
Rezultatul afisat |
SELECT LOWER(first_name) FROM employees; |
afiseaza prenumele persoanelor din tabela employees scrise cu litere mici |
SELECT LOWER('abc123ABC') FROM DUAL; |
abc123abc |
SELECT UPPER('abc123ABC') FROM DUAL; |
ABC123ABC |
SELECT INITCAP('aBc def*ghi') FROM dual; |
Abc Def*Ghi Explicatie sirul contine cuvinte aBc def si ghi |
CONCAT(sir1, sir2) - concateneaza doua siruri de caractere
Exemplu |
Rezultatul afisat |
SELECT CONCAT('abc','def') FROM dual; |
abcdef Explicatie comanda poate fi transcrisa folosind operatorul de concatenare astfel: SELECT 'abc'||'def' FROM dual; |
SUBSTR(sir,poz,nr) - extrage din sir cel mult nr caractere incepand din pozitia poz
Observatii
daca din pozitia poz pana la sfarsitul sirului sunt mai putin de nr caractere, se vor extrage toate caracterele de la pozitia poz pana la sfarsitul sirului.
parametrul poz poate fi si o valoare negativa, ceea ce inseamna ca pozitia de unde se va incepe extragerea caracterelor din sir se va determina numarand caracterele din sir de la dreapta spre stanga (vezi ultimele 3 exemple de mai jos)
daca nr nu este specificat, se va returna subsirul incepand cu caracterul de pe pozitia poz din sir pana la sfarsitul sirului.
Exemplu |
Rezultatul afisat |
select substr('abcdef',3,2) from dual |
cd |
select substr('abcdef',3,7) from dual |
cdef Explicatie. Chiar daca din pozitia 3 pana la sfarsitul sirului nu mai sunt 7 caractere se returneaza caracterele ramase |
select substr('abcdef',3) from dual |
cdef Explicatie. Acelasi rezultat ca mai sus daca nu se specifica numarul de caractere ce se extrag |
select substr('abcdef',7,3) from dual |
nu se va afisa nimic deoarece nu exista pozitia in sir, acesta avand doar caractere. |
select substr('abcdef',-4,2) from dual |
cd Explicatie. Se extrag doua caractere incepand cu al patrulea caracter din dreapta. |
select substr('abcdef',-4,7) from dual |
cdef |
select substr('abcdef',-10,5) from dual |
nu se va afisa nimic deoarece sirul contine mai putin de 10 caractere |
INSTR(sir,subsir,poz,k) - returneaza pozitia de inceput a celei de a k-a aparitii a subsirului subsir in sirul sir, cautarea facandu-se incepand cu pozitia poz
Daca parametrii poz si k lipsesc, atunci se va returna pozitia primei aparitii a subsirului subsir in intregul sir sir
Pozitia de unde incepe cautarea poate fi precizata si relativ la sfarsitul sirului, ca si in cazul functiei substr, daca parametrul poz are o valoare negativa.
Exemplu |
Rezultatul afisat |
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 |
Explicatie. Se incepe cautarea din pozitia a patra, adica in zona subliniata cu o linie, si se afiseaza pozitia de start a celei de a doua aparitii, (subsirul subliniat cu linie dubla) |
select instr('abababababab','ab',-4,1) from dual |
LENGTH(sir) - returneaza numarul de caractere din sirul sir
Exemplu |
Rezultatul afisat |
select length('abcd') from dual |
LPAD(sir1,nr,sir2) - completeaza sirul sir1 la stanga cu caracterele din sirul sir2 pana ce sirul obtinut va avea lungimea nr
Daca lungimea sirului sir1 este mai mare decat nr, atunci functia va realiza trunchierea sirului sir1, stergandu-se caracterele de la sfarsitul sirului.
Exemplu |
Rezultatul afisat |
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) - similara cu functia LPAD, completarea facandu-se la dreapta.
Exemplu |
Rezultatul afisat |
select rpad('abcd',3,'*') from dual |
abc |
select rpad('abcd',10,'*.') from dual |
abcd*.*.*. |
select rpad('abc',10,'*.') from dual |
abc*.*.*.* |
select rpad('abc',5,'xyzw') from dual |
abcxy |
TRIM(LEADING ch FROM sir)
TRIM(TRAILING ch FROM sir)
TRIM(BOTH ch FROM sir)
TRIM(sir)
TRIM(ch FROM sir)
functia TRIM sterge caracterele ch de la inceputul, sfarsitul sau din ambele parti ale sirului sir
in ultimele doua formate ale functiei este subinteleasa optiunea BOTH
daca ch nu este specificat se vor elimina spatiile inutile de la inceputul, sfarsitul sau din ambele parti ale sirului sir
Exemplu |
Rezultatul afisat |
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) - inlocuieste toate aparitiile subsirului subsir din sirul sir cu sirul sirnou. Daca nu este specificat noul sir, toate aparitiile subsirului subsir se vor elimina.
Exemplu |
Rezultatul afisat |
select replace('abracadabra','ab','xy') from dual |
xyracadxyra |
select replace('abracadabra','ab','xyz') from dual |
xyzracadxyzra |
select replace('abracadabra','a') from dual |
brcdbr |
Evident intr-o expresie pot fi folosite doua sau mai multe astfel de functii, imbricate ca in urmatorul exemplu.
SELECT substr('abcabcabc',1,instr('abcabcabc','bc')-1)||
'xyz' ||
substr('abcabcabc',instr('abcabcabc','bc')+length('bc'))
FROM dual
Sa analizam pe aceasta comanda
instr('abcabcabc','bc')
retuneaza pozitia primei aparitii a sirului 'bc' in sirul 'abcabcabc ', adica 2. Primul apel al functiei substr este deci echivalent cu apelul
substr('abcabcabc',1,1)
adica extrage doar prima litera 'a'. Al doilea apel al functiei substr este echivalent cu
substr('abcabcabc',4)
adica extrage toate caracterele de la pozitia 4 pana la sfarsitul sirului, deci 'abcabc'. Asadar cele doua apeluri extrag subsirul de dinaintea primei aparitii a lui 'bc in sirul 'abcabcabc', si respectiv de dupa aceasta aparitie. Cele doua secvente se concateneaza apoi intre ele incluzandu-se sirul 'xyz'. In concluzie comanda inlocuieste prima aparitie a sirului 'bc' din sirul 'abcabcabc' cu sirul 'xyz
Figura II.2.2 Combinarea functiilor caracter
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2036
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved