Figura 6-9 Diagrama sintaxei pentru verificarea apartenenței într-un set (operatorul XN)
Dacă nu verificați, puteți verifica dacă elementul de date nu este membru al unui anumit set. Expresia de test din instrucțiunea in poate fi orice expresie validă, dar este de obicei un nume de coloană scurt, ca în exemplele anterioare. Dacă rezultatul expresiei test este null, atunci testul înapoi revine și null. Toate elementele din lista de valori specificate trebuie să aibă același tip de date, care trebuie să fie comparabil cu tipul de date al expresiei testate.
Pe lângă verificarea între, verificarea nu adaugă nimic nou la capacitatea SQL, deoarece condiția
este complet echivalent cu condiția
(X = A) OR (X = B) OR (X = C)
Cu toate acestea, în testare oferă o modalitate mult mai eficientă de exprimare a condiției de selecție, mai ales dacă setul conține un număr mare de elemente. În standardul ANS1 / 1S0, numărul maxim de elemente ale setului nu este definit, iar în majoritatea DBMS-urilor, limita superioară nu este setată explicit. Din motive de portabilitate, este mai bine să evitați seturile care conțin un element, cum ar fi:
CITY IN (Mew York)
Acestea ar trebui înlocuite cu următoarea comparație simplă:
Testul de potrivire a modelului (instrucțiunea LIKE)
Pentru a selecta rânduri în care conținutul unei coloane de text este același cu textul dat, puteți utiliza o simplă comparație. De exemplu, următoarea interogare preia un rând din tabelul de clienți după nume:
Afișați limita de credit pentru Smithson Corp.
SELECTAREA COMPANIEI, LIMITĂ DE CREDIT DE LA CLIENȚI CARE COMPANIA = Smithson Corp.
Cu toate acestea, este foarte ușor să uitați numele care ne interesează compania: Smith. Smithson sau Smithsonian. Testul de potrivire a modelului vă permite să selectați rânduri din baza de date pe baza potrivirii parțiale a numelui clientului
Verificarea potrivirii tiparului (ca și operatorul), prezentată schematic în Fig. 6.10, vă permite să determinați dacă valoarea datelor din coloană corespunde unui anumit model. Un șablon este un șir care poate conține una sau mai multe șargătoare. Aceste semne sunt interpretate într-un mod special.
- ESCAPE săriți caracterul
Figura 6-10 Diagrama de potrivire a schemei de testare on-line (operatorul LIKE)
Marcajul% se potrivește cu orice secvență de caractere de zero sau mai multe. Mai jos este o versiune modificată a interogării anterioare, care utilizează un șablon care conține semnul procentului:
SELECTAREA COMPANIEI, LIMITĂ DE CREDIT DE LA CLIENȚI ÎN CARE SUNT COMPANIILE SIMILARE Smith% Corp.
Operatorul similar dă SGBS că este necesar să comparăm conținutul coloanei cu numele cu modelul Smith% Corp. Acest model se potrivește cu toate denumirile listate.
Smith Corp. Smithson Corp. Smithsen Corp. Smithsonian Corp.
Și aici următoarele nume nu corespund acestui șablon:
SmithCorp Smithson Inc.
Caracterele caracteristice (subliniere) corespund oricărui caracter. De exemplu, dacă sunteți sigur că numele companiei este fie Smithson. sau Smithsen. atunci puteți utiliza următoarea interogare:
SELECTAREA COMPANIEI, LIMITĂ DE CREDIT DE LA CLIENȚI ÎN CARE SUNT COMPANIE SIMILARĂ Smithsen Corp.
În acest caz, oricare dintre aceste nume se va potrivi cu modelul
Smithson Corp. Smithsen Corp. Smithsun Corp.
și nici unul dintre acestea nu se va potrivi:
Smithsoon Corp. Smithsn Corp.
Cartelele Wildcards pot fi plasate oriunde în șirul de șablon, iar o singură linie poate conține mai multe metacaractere. Următoarea interogare permite scrierea lui Smithson și Smithsen. și orice alt capăt al denumirii companiei, inclusiv Corp. Inc sau altele:
SELECTAREA COMPANIEI, LIMITUL DE CREDIT CLIENȚI DE TROM ÎN CARE SUNT COMPANIILE SIMILOR Smiths n%
Folosind formularul care nu este asemănător, puteți găsi linii care nu se potrivesc cu șablonul. Puteți aplica un test similar numai pentru coloanele care au un tip de date șir. Dacă coloana conține valoarea nulă, atunci rezultatul este similar
Probabil că deja sa întâlnit cu un cec de potrivire de model în sistemele de operare, cu o interfață linie de comandă (Unix, MS-DOS). În aceste sisteme, asteriscul (*) este utilizat pentru aceleași scopuri ca semnul de procent (%), cu SQL, iar semnul de întrebare (?) Corespunde simbolul de subliniere () cu SQL, dar, în general, posibilitatea de a lucra cu modele în șiruri sunt aceleași
Atunci când verificați dacă șiruri de caractere se potrivesc cu un model, se poate dovedi că caracterele sunt incluse în șirul de caractere ca literal. De exemplu, nu puteți verifica dacă semnul procent din șir este inclus prin simpla includere a acestuia în șablon, deoarece DBMS va trata acest caracter ca metacaracter. De obicei, acest lucru nu cauzează probleme grave, deoarece caracterele cu caractere de tip wildcard sunt rareori găsite în nume, nume de produse și alte date de text care sunt stocate în mod normal în baza de date.
Standardul ANSI / ISO definește o modalitate de a verifica literalii șir folosite ca wildcard. Pentru aceasta, sunt utilizate simbolurile de sărituri. În cazul în care șablonul întâlnește un caracter, caracterul imediat după aceasta, nu este considerat un wildcard și literal (Nu alãturat) Imediat după trecerea simbol poate urma fie unul dintre cele două personaje wildcard, sau el trece personajul, pentru că el, de asemenea, devine în șablon este o valoare specială.
Caracterul de ignorare este definit ca un șir constând dintr-un caracter și o clauză de evadare (Figura 6.10) Următorul exemplu este acela de a folosi semnul dolar ($) ca caracter de ignorare:
Găsiți produsele ale căror coduri încep cu cele patru litere A% BC.
SELECT NUMĂRUL DE COMANDĂ, PRODUS DIN ORDINE, ÎN CARE PRODUSUL TREBUIE UN $% BC% ESCAPE $
Primul simbol al procentului din modelul următor caracterului de săritură este considerat literal, cel de-al doilea este un caracter wildcard
Sariile de simboluri sunt adesea folosite la verificarea potrivirii modelului, motiv pentru care au fost incluse în standardul ANSI / ISO. Cu toate acestea, ele nu au fost incluse în primele implementări ale SQL și, prin urmare, nu sunt foarte frecvente. Pentru a asigura portabilitatea aplicațiilor, evitați utilizarea clauzei de evacuare
Verificați pentru egalitate la NULL (IS NULL)
Valorile nula oferă posibilitatea de a aplica logica tri valori în condițiile de selecție. Pentru orice șir dat, rezultatul aplicării condiției de selecție poate fi adevărat, fals sau nul (în cazul în care una dintre coloane conține valoarea null) Uneori este necesar să se verifice în mod explicit valorile coloanelor pentru nul și să se proceseze direct acestea. Pentru a face acest lucru, SQL are o verificare specială este nulă, diagrama de sintaxă a căreia este prezentată în Fig. 6.11.