Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Functii asupra sirurilor de caractere

sql



+ Font mai mare | - Font mai mic



Functii asupra sirurilor de caractere

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

Combinarea functiilor asupra sirurilor de caractere

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2036
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved