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
FROMklausul. - For det andet skal du evaluere betingelserne i
WHEREklausul 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
SELECTklausul.
Søgebetingelsen i WHERE har følgende form:
left_expression COMPARISON_OPERATOR right_expressionCode 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.