Folosirea filtrarii cu caractere de inlocuire
- In lectia aceasta,veti invata ce sunt caracterele de inlocuire, cum se folosesc ele si cum sa efectuati cautari cu ajutorul lor si,folosind operatorul LIKE pentru filtrarea sofisticata a datelor regasite
- Operatorul LIKE
Toti operatorii pe care i-ati studiat pana acuma filtreaza bazandu-se pe valori cunoscute.Indiferent daca ei cauta corespondenta uneia sau mai multor valori, daca sunt in cautarea unor valori mai mari sau mai mici de cat altele cunoscute ,sau daca verifica un domeniu de valori ,numitorul lor comun este faptul ca se cunosc valorile folosite in filtrare.Filtrarea datelor in acest mod nu este posibila intotdeauna.De exemplu ,cum puteti sa cautati toate produsele ce contin in numele lor textul 'jucarie pasare?'Acest lucru nu se poate realiza cu operatorii simpli de comparare, ci doar cu caracterele de inlocuire.Folosind caracterele de inlocuire, puteti crea modele de cautare ce pot fi comparate cu datele existente.I acest exemplu daca doriti sa gasiti toate produsele ce contin in numele lor cuvintele 'jucarie,pasare',puteti sa construiti un model de cautare cu caracter de inlocuire ,care va permite sa gasiti textul 'jucarie, pasare' oriunde in numele unui produs.Caractere de inlocuireCaractere speciale folosite pentru a corespunde unor parti dintr-o valoare.
Model de cautare.Conditie de cautare alcatuita din text literal si din unul sau mai multe caractere de inlocuire
Caracterele de inlocuire sunt caractere ce au intelesuri speciale in clauzele WHERE din SQL iar limbajul SQL accepta diverse tipuri de caractere de inlocuire.Pentru a utiliza caracterele de inlocuire in clauzele de cautare, trebuie utilizat operatorul LIKE .Aceasta anunta sistemul de gestionare a bazei de date ca in urmatorul model de cautare se va folosi o potrivire dupa caractere de inlocuire,nu o simpla potrivire de egalitate.Cand un operator nu este operator?Atunci cand este "predicat".Din punct de vedere tehnic LIKE este un predicat, nu un operator.Rezultatul final este acela, totusi fiti atent la acest termen, in cazul in care-l intalniti in documentatia sau manualele de SQL.
Cautarea cu caractere de inlocuire poate fi utilizata numai cu campuri de tip text (siruri);nu puteti folosi caractere de inlocuire pentru a cauta campuri cu date de tip non text. - Caracterul de inlocuire procentaj (%)
Caracterul de inlocuire cel mai frecvent utilizat este procentajul (%).Intr-un sir de cautare%inseamnacorespunde cu orcate aparitii ale orcarui caracter.De exemplu,pentru a gasi toate produsele care incep cu cuvantul'ursulet' puteti folosi urmatoarea instructiune SELECT.SELECT prod_id , prod_nume
FROM Produse
WHERE prod_nume LIKE 'ursulet'%;
prod_id prod_nume
........................................
BR01 Ursulet 8 inch
BR02 Ursulet 12 inch
BR03 Ursulet 18 inch
Exemplul acesta foloseste modelul de cautare 'ursulet'%.Cand clauza aceasta este evaluata,va fi regasita orce valoare care incepe cu 'ursulet'Caracterul%anunta sistemul de gestionare a bazei de date sa accepte orce caractere dupa cuvantul ursulet indiferent cat de multe ar fi ele. Caracterele de inlocuire pot fi folosite oriunde in modelul de cautare;de asemenea,se pot folosi mai multe caractere de inlocuire.Urmatorul exemplu foloseste doua caractere de inlocuire,la extremitatile modelului de cautare:SELECT prod_id, prod_nume
FROM Produse
WHERE prod_nume LIKE '%tip%';
prod_id prod_nume
........................................
BNBG01 Jucarie tip peste
BNBG02 Jucarie tip pasare
BNBG03 Jucarie tip iepure
Modelul de cautare '%tip%' inseamnacorespunde cu orce valoare ce contine textul tip oriunde in interiorul sau indiferent de caracterele care preced sau urmeaza acestui text.. Caracterele de inlocuire pot fi de asemenea utilizate in mijlocul modelului de cautare,desi sunt rareori utile in aceasta modalitate.Urmatorul exemplu gaseste toate produsele care incep cu p si se termina cu e.SELECT prod_nume
FROM Produse
WHERE prod_nume LIKE 'p%e';
Este important de observat ca,pe langa faptul ca asigura o corespondenta cu unul sau mai multe caractere,%asigura corespondentaco zero caractere.%reprezinta 0,1 sau mai multe caractere in locul specificat in modelul de cautare. - Caracterul de inlocuire liniuta de subliniere(_)
Un alt caracter de inlocuire util este liniuta de subliniere(_).El este utilizat la fel ca %,dar nu asigura corespondenta mai multor caractere,ci numai a unuia singur.SELECT prod_id, prod_nume
FROM Produse
WHERE prod_nume LIKE '_ inch';
prod_it prod_nume
..................................................
BR02 Ursulet 12 inch
BR03 Ursulet 18 inch
Modelul de cautare folosit in aceasta clauza WHERE specifica doua caractere de inlocuire urmate de text literar.Rezultatele prezentate sunt singurele linii care corespund modelului de cautare :Liniutele de cautare corespund valorii 12 din prima linie si valorii 18 din a doua linie.Produsul 'ursulet 8 inch' nu corespunde deoarece modelul de cautare necesita potrivirea a doua caractere de inlocuire, nu a unuia.Pe de alta parte,urmatoarea instructiune SELECT foloseste caracterul de inlocuire %si returneaza trei produse corespondente:SELECT prod_id, prod_nume
FROM Produse
WHERE prod_nume LIKE 'Ursulet%';
prod_id prod_nume
.............................................
BR01 Ursulet 8 inch
BR02 Ursulet 12 inch
BR03 Ursulet 18 inch
Spre deosebire de %,care poate sa corespunda si la 0 caractere,o singura _corespunde intotdeauna la un singur caracter,nici mai mult nici mai putin. - Caracterul de inlocuire paranteze drepte ([ ])
Caracterul de inlocuire paranteze drepte ([ ]) este folosit pentru specificarea unui set de caractere,orcare dintre ele trebuind sa corespunda unui caracter in pozitia specificata (locul caracterului de inlocuire).De exemplu pentru a gasi toate contactele ale caror nume incep cu litera J sau cu litera M , puteti scrie urmatorul cod.SELECT cump_contact
FROM Cumparatori
WHERE cump_contact LIKE '[JM]%'
ORDER BY cump_contact;
cump_contact
Jim Jones
John Smith
Michelle Green
Clauza WHERE din aceasta instructiune este '[JM]%'.Modelul acesta de cautare foloseste doua caractere de inlocuire diferite.[JM] cauta toate numele contactelor care sa inceapa cu orcare dintre literele continute intre parantezeledrepte,dar numai una singura.Caracterul de inlocuire %de dupa [JM] corespunde la orcate caractere situate dupa primul caracter si astfel returneaza rezultatele dorite. Acest caracter de inlocuire poate fi negat introducand in fata literelor un accent circumflex(^).De exemplu, urmatorul cod gaseste toate numele contactelor care nu incep cu litera J sau cu litera M (invers decat in exemplu anterior):SELECT cump_contact
FROM Cumparatori
WHERE cump_contact LIKE '[^JM]%'
ORDER BY cump_contact
Desigur,puteti sa obtineti acelasi rezultat ,folosind operatorul NOT .Singurul avantaj al caracterului ^ este ca poate simplifica sintaxa,daca folositi clauze WHERE multiple:SELECT cump_contact
FROM Cumparatori
WHERE NOT cump_contact LIKE '[JM]%
ORDER BY cump_contact;Caracterul de inlocuire paranteze drepte ([ ])nu este acceptat de toate SGBD-urile .Consultati-va documentatia sistemului de gestionare a bazei de date pentru a vedea daca accepta acest caracter de inlocuire.
- Caractere de inlocuire non-standard
Unele SGBD-uri utilizeaza caractere de inlocuire non-standard.Cel pe care-l veti intalni probabil cel mai frecvent provine de la Microsoft Acces, care foloseste * pentru %,si ? pentru .In functie de sistemul de gestionare a bazei de date pe care -l utilizati si de felul in care-l utilizati,poate fi necesara intrebuintarea acestor caractere de inlocuire in locul celor standard din limbajul SQL. -
Sugestii pentru folosirea caracterelor de inlocuire.Dupa cum se poate vedea,caracterele de inlocuire din limbajul SQL sunt foarte puternice ,insa puterea respectiva are un pret :de obicei cautarile cu caractere de inlocuire dureaza mult mai mult decat orcare alte tipuri de cautari prezentate anterior.Iata cateva reguli de care trebuie sa tineti seama atunci cand folositi caractere de inlocuire. -Nu exagerati cu folosirea lor.Daca se poate utiliza si alt operator de cautare apelati la el. -Atunci cand folositi caractere de inlocuire incercati sa n-o faceti la inceputul modelului de cautare decat daca este absolut necesar .Modelele de cautare care incep cu caractere de inlocuire au durata de prelucrare cea mai lunga. -Atentie la plasarea caracterelor de inlocuire .Daca sunt plasate gresit este posibil sa nu va fie returnate datele dorite.Caracterele de inlocuire raman totusi un instrument de cautare important si util pe care -l veti folosi frecvent
Link-ul autorului:
www.avasilcaidaniel.com/
Comentarii
Voteaza acest articol!
Trimite un comentariu!