Sammanfattning :i denna handledning kommer du att lära dig hur du använder SQLite WHERE sats för att ange sökvillkoret för rader som returneras av frågan.
Introduktion till SQLite WHERE klausul
WHERE sats är en valfri sats i SELECT påstående. Den visas efter FROM klausul som följande uttalande:
SELECT
column_list
FROM
table
WHERE
search_condition;Code language: SQL (Structured Query Language) (sql)
I det här exemplet lägger du till en WHERE sats till SELECT uttalande för att filtrera rader som returneras av frågan. När du utvärderar en SELECT uttalande med en WHERE sats, använder SQLite följande steg:
- Kontrollera först tabellen i
FROMklausul. - För det andra, utvärdera villkoren i
WHEREklausul för att få de rader som uppfyllde dessa villkor. - För det tredje, gör det slutliga resultatet baserat på raderna i föregående steg med kolumner i
SELECTklausul.
Sökvillkoret i WHERE har följande form:
left_expression COMPARISON_OPERATOR right_expressionCode language: SQL (Structured Query Language) (sql) Du kan till exempel skapa ett sökvillkor enligt följande:
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)
Förutom SELECT kan du använda WHERE klausul i UPDATE och DELETE uttalanden.
SQLite jämförelseoperatorer
En jämförelseoperator testar om två uttryck är lika. Följande tabell illustrerar jämförelseoperatorerna som du kan använda för att konstruera uttryck:
| Operator | Betydning |
|---|---|
| = | Lika med |
| <> eller != | Inte lika med |
| < | Mindre än |
| > | Större än |
| <= | Mindre än eller lika med |
| >= | Större än eller lika med |
SQLite logiska operatorer
Med logiska operatorer kan du testa sanningen i vissa uttryck. En logisk operator returnerar 1, 0 eller ett NULL-värde.
Observera att SQLite inte tillhandahåller boolesk datatyp, därför betyder 1 SANT och 0 betyder FALSK.
Följande tabell illustrerar de logiska SQLite-operatorerna:
| Operator | Betydning |
|---|---|
| ALLA | returerar 1 om alla uttryck är 1. |
| OCH | returerar 1 om båda uttrycken är 1 och 0 om ett av uttrycken är 0. |
| NÅGON | returerar 1 om någon av en uppsättning jämförelser är 1. |
| MELLAN | returerar 1 om ett värde är inom ett intervall. |
| FINNS | returerar 1 om en underfråga innehåller några rader. |
| IN | returerar 1 om ett värde finns i en värdelista. |
| GILLA | returerar 1 om ett värde matchar ett mönster |
| INTE | vänder värdet på andra operatorer som INTE FINNS, INTE I, INTE MELLAN, etc. |
| ELLER | returnerar sant om något uttryck är 1 |
SQLite WHERE klausulexempel
Vi kommer att använda tracks tabell i exempeldatabasen för att illustrera hur man använder WHERE klausul.
Jämlikhetsoperatören (= ) är den mest använda operatorn. Till exempel använder följande fråga WHERE klausul jämlikhetsoperatorn för att hitta alla spår i album-id 1:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1;Code language: SQL (Structured Query Language) (sql) Prova det
SQLite jämför värdena lagrade i AlbumId kolumn med ett bokstavligt värde 1 för att testa om de är lika. Endast de rader som uppfyller villkoret returneras.
När du jämför två värden måste du se till att de är av samma datatyp. Du bör jämföra siffror med siffror, sträng med strängar, etc.
Om du jämför värden i olika datatyper, t.ex. en sträng med ett nummer, måste SQLite utföra implicita datatypkonverteringar, men i allmänhet bör du undvika att göra detta.
Du använder den logiska operatorn för att kombinera uttryck. Till exempel, för att få spår av album 1 som är längre än 200 000 millisekunder, använder du följande uttalande:
SELECT
name,
milliseconds,
bytes,
albumid
FROM
tracks
WHERE
albumid = 1
AND milliseconds > 250000;Code language: SQL (Structured Query Language) (sql) Prova det
Uttrycket använde två uttryck albumid = 1 och milliseconds > 250000 . Den använder AND logisk operator för att kombinera dessa uttryck.
SQLite WHERE sats med LIKE operatörsexempel
Ibland kanske du inte kommer ihåg exakt vilken data du vill söka efter. I det här fallet utför du en inexakt sökning med LIKE operatör.
Till exempel, för att hitta vilka spår som komponerats av Smith använder du LIKE operatör enligt följande:
SELECT
name,
albumid,
composer
FROM
tracks
WHERE
composer LIKE '%Smith%'
ORDER BY
albumid;Code language: SQL (Structured Query Language) (sql) Prova det
Du får låtar komponerade av R.A. Smith-Diesel, Adrian Smith, etc.
SQLite WHERE sats med IN operatörsexempel
IN operatorn låter dig kontrollera om ett värde finns i en lista med en kommaseparerad lista med värden. Till exempel, för att hitta spår som har mediatyp-id 2 eller 3 använder du IN operatör som visas i följande uttalande:
SELECT
name,
albumid,
mediatypeid
FROM
tracks
WHERE
mediatypeid IN (2, 3);Code language: SQL (Structured Query Language) (sql) Prova det
I den här handledningen har du lärt dig hur du använder SQLite WHERE sats för att filtrera rader i den slutliga resultatuppsättningen med hjälp av jämförelse- och logiska operatorer.