Hvis du vil vælge specifikke rækker i en tabel, skal du efter SELECT-sætningen med et WHERE-udtryk angive ét eller flere kriterier, som de valgte rækker skal opfylde. Et kriterium til udvælgelse af rækker fra en tabel er et søgekriterium.
Et søgekriterium består af ét eller flere prædikater. Et
prædikat angiver en betingelse, som er sand eller falsk (eller ukendt) for en
række. Du kan angive betingelser i WHERE-udtrykket vha. følgende
grundlæggende prædikater:
Prædikat | Funktion |
---|---|
x = y | x er lig med y |
x <> y | x er forskellig fra y |
x < y | x er mindre end y |
x > y | x er større end y |
x <= y | x er mindre end eller lig med y |
x >= y | x er større end eller lig med y |
IS NULL/IS NOT NULL | der testes for NULL-værdier |
Når du opretter søgekriterier, skal du sørge for kun at foretage beregninger for numeriske data og kun at sammenligne data, der er kompatible. Således kan tekststrenge og tal ikke sammenlignes.
Hvis du udvælger rækker på grundlag af en tegnværdi, skal værdien stå i enkelte anførselstegn, f.eks. WHERE JOB = 'Clerk', og alle tegnværdier skal indtastes nøjagtig som i databasen. Hvis dataværdien er skrevet med små bogstaver i databasen, og du bruger store bogstaver, vælges ingen rækker. Hvis du udvælger rækker på grundlag af en numerisk værdi, må værdien ikke stå i anførselstegn, f.eks. WHERE DEPT = 20.
I følgende eksempel udvælges kun de rækker, hvor afdelingsnummeret er 20, fra tabellen STAFF:
SELECT DEPT, NAME, JOB FROM STAFF WHERE DEPT = 20
Resultatet er:
DEPT NAME JOB ------ --------- ----- 20 Sanders Mgr 20 Pernal Sales 20 James Clerk 20 Sneider Clerk
I det næste eksempel bruges AND til at angive mere end ét kriterium. Du kan angive så mange kriterier, du vil. I eksemplet udvælges de medarbejdere i afdeling 20, som har stillingsbetegnelsen "clerk", fra tabellen STAFF:
SELECT DEPT, NAME, JOB FROM STAFF WHERE JOB = 'Clerk' AND DEPT = 20
Resultatet er:
DEPT NAME JOB ------ --------- ----- 20 James Clerk 20 Sneider Clerk
En NULL-værdi optræder, når der ikke angives nogen værdi, og kolonnen ikke har en standardværdi. En værdi kan også eksplicit angives til at være NULL. Værdien kan kun optræde, hvis kolonnen er defineret til at kunne indeholde NULL-værdier. Brugen af NULL-værdier beskrives under Opret tabel.
Brug prædikatet IS NULL eller IS NOT NULL, hvis du vil teste for NULL-værdier.
Med følgende sætning får du vist de medarbejdere, hvis provision er ukendt:
SELECT ID, NAME FROM STAFF WHERE COMM IS NULL
Resultatet er:
ID NAME ------ --------- 10 Sanders 30 Marenghi 50 Hanes 100 Plotz 140 Fraye 160 Molinare 210 Lu 240 Daniels 260 Jones 270 Lea 290 Quill
Værdien nul er ikke det samme som NULL-værdien. Med følgende sætning får du vist alle i tabellen, hvis provision er nul:
SELECT ID, NAME FROM STAFF WHERE COMM = 0
Da der ikke er nogen nuller i kolonnen COMM i eksempeltabellen, returneres en tom resultatrække.
I det næste eksempel udvælges alle rækker, hvor værdien for YEARS i tabellen STAFF er højere end 9:
SELECT NAME, SALARY, YEARS FROM STAFF WHERE YEARS > 9
Resultatet er:
NAME SALARY YEARS --------- --------- ------ Hanes 20659.80 10 Lu 20010.00 10 Jones 21234.00 12 Quill 19818.00 10 Graham 21000.00 13