Oversigt :i denne tutorial lærer du, hvordan du bruger SQLite WHERE
klausul for at angive søgebetingelsen for rækker, der returneres af forespørgslen.
Introduktion til SQLite WHERE
klausul
WHERE
klausul er en valgfri klausul af SELECT
udmelding. Den vises efter FROM
klausul som følgende udsagn:
SELECT
column_list
FROM
table
WHERE
search_condition;
Code language: SQL (Structured Query Language) (sql)
I dette eksempel tilføjer du en WHERE
klausul til SELECT
sætning for at filtrere rækker, der returneres af forespørgslen. Ved evaluering af en SELECT
sætning med en WHERE
klausul, bruger SQLite følgende trin:
- Tjek først tabellen i
FROM
klausul. - For det andet skal du evaluere betingelserne i
WHERE
klausul for at få de rækker, der opfyldte disse betingelser. - For det tredje laver du det endelige resultatsæt baseret på rækkerne i det foregående trin med kolonner i
SELECT
klausul.
Søgebetingelsen i WHERE
har følgende form:
left_expression COMPARISON_OPERATOR right_expression
Code language: SQL (Structured Query Language) (sql)
For eksempel kan du danne en søgebetingelse som følger:
WHERE column_1 = 100;
WHERE column_2 IN (1,2,3);
WHERE column_3 LIKE 'An%';
WHERE column_4 BETWEEN 10 AND 20;
Code language: SQL (Structured Query Language) (sql)
Udover SELECT
sætning, kan du bruge WHERE
klausul i UPDATE
og DELETE
udsagn.
SQLite sammenligningsoperatorer
En sammenligningsoperator tester, om to udtryk er ens. Følgende tabel illustrerer de sammenligningsoperatorer, som du kan bruge til at konstruere udtryk:
Operator | Betydning |
---|---|
= | Lige med |
<> eller != | Ikke lig med |
< | Mindre end |
> | Større end |
<= | Mindre end eller lig med |
>= | Større end eller lig med |
SQLite logiske operatorer
Logiske operatorer giver dig mulighed for at teste sandheden af nogle udtryk. En logisk operator returnerer 1, 0 eller en NULL-værdi.
Bemærk, at SQLite ikke leverer boolsk datatype, derfor betyder 1 SAND, og 0 betyder FALSK.
Følgende tabel illustrerer de logiske SQLite-operatorer:
Operatør | Betydning |
---|---|
ALLE | returnerer 1, hvis alle udtryk er 1. |
OG | returnerer 1, hvis begge udtryk er 1, og 0, hvis et af udtrykkene er 0. |
ENHVER | returnerer 1, hvis en af et sæt af sammenligninger er 1. |
MELLEM | returnerer 1, hvis en værdi er inden for et interval. |
FINDER | returnerer 1, hvis en underforespørgsel indeholder nogle rækker. |
IN | returnerer 1, hvis en værdi er på en liste over værdier. |
LIKE | returnerer 1, hvis en værdi matcher et mønster |
IKKE | vender værdien af andre operatorer, såsom IKKE FINDER, IKKE I, IKKE MELLEM, osv. |
ELLER | returnerer sandt, hvis et af udtryk er 1 |
SQLite WHERE
klausuleksempler
Vi vil bruge tracks
tabel i eksempeldatabasen for at illustrere, hvordan man bruger WHERE
klausul.
Ligestillingsoperatøren (=
) er den mest brugte operator. For eksempel bruger følgende forespørgsel WHERE
klausul lighedsoperatøren for at finde alle numrene i album-id 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;
Code language: SQL (Structured Query Language) (sql)
Prøv det
SQLite sammenligner værdierne gemt i AlbumId
kolonne med en bogstavelig værdi 1
for at teste om de er ens. Kun de rækker, der opfylder betingelsen, returneres.
Når du sammenligner to værdier, skal du sikre dig, at de er af samme datatype. Du bør sammenligne tal med tal, streng med strenge osv.
Hvis du sammenligner værdier i forskellige datatyper, f.eks. en streng med et tal, skal SQLite udføre implicitte datatypekonverteringer, men generelt bør du undgå at gøre dette.
Du bruger den logiske operator til at kombinere udtryk. For at få numre af album 1, der har en længde på mere end 200.000 millisekunder, bruger du f.eks. følgende sætning:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Udsagnet brugte to udtryk albumid = 1
og milliseconds > 250000
. Den bruger AND
logisk operator til at kombinere disse udtryk.
SQLite WHERE
klausul med LIKE
operatøreksempel
Nogle gange kan du måske ikke huske præcis de data, du vil søge efter. I dette tilfælde udfører du en upræcis søgning ved hjælp af LIKE
operatør.
For at finde ud af, hvilke numre Smith har skrevet, bruger du LIKE
operatør som følger:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Prøv det
Du får numre komponeret af R.A. Smith-Diesel, Adrian Smith osv.
SQLite WHERE
klausul med IN
operatøreksempel
IN
operator giver dig mulighed for at kontrollere, om en værdi er på en liste over en kommasepareret liste over værdier. For at finde spor, der f.eks. har medietype-id er 2 eller 3, bruger du IN
operatør som vist i følgende sætning:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);
Code language: SQL (Structured Query Language) (sql)
Prøv det
I denne øvelse har du lært, hvordan du bruger SQLite WHERE
klausul for at filtrere rækker i det endelige resultatsæt ved hjælp af sammenligning og logiske operatorer.