Sammanfattning: i den här handledningen kommer du att lära dig om SQLite CASE
uttryck för att lägga till den villkorliga logiken till en fråga.
SQLite CASE
expression utvärderar en lista med villkor och returnerar ett uttryck baserat på resultatet av utvärderingen.
CASE
uttrycket liknar IF-THEN-ELSE
uttalande på andra programmeringsspråk.
Du kan använda CASE
uttryck i någon sats eller påstående som accepterar ett giltigt uttryck. Du kan till exempel använda CASE
uttryck i satser som WHERE
, ORDER BY
, HAVING
, SELECT
och satser som SELECT
, UPDATE
och DELETE
.
SQLite tillhandahåller två former av CASE
uttryck:enkelt CASE
och sökte CASE
.
SQLite enkelt CASE
uttryck
Det enkla CASE
expression jämför ett uttryck med en lista med uttryck för att returnera resultatet. Följande illustrerar syntaxen för det enkla CASE
uttryck.
CASE case_expression
WHEN when_expression_1 THEN result_1
WHEN when_expression_2 THEN result_2
...
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
Det enkla CASE
expression jämför case_expression
till uttrycket visas i den första WHEN
klausul, when_expression_1
, för jämlikhet.
Om case_expression
är lika med when_expression_1
, det enkla CASE
returnerar uttrycket i motsvarande THEN
sats, som är result_1
.
Annars den enkla CASE
expression jämför case_expression
med uttrycket i nästa WHEN
klausul.
Om inget case_expression
matchar when_expression
, CASE
uttryck returnerar result_else
i ELSE
klausul. Om du utelämnar ELSE
satsen, CASE
uttryck returnerar NULL.
Det enkla CASE
uttryck använder kortslutningsutvärdering. Med andra ord, den returnerar resultatet och slutar utvärdera andra villkor så snart den hittar en matchning.
Enkelt CASE
exempel
Låt oss ta en titt på customers
tabell i exempeldatabasen.
Anta att du måste göra en rapport över kundgrupperna med logiken att om en kund befinner sig i USA, så tillhör denna kund den inhemska gruppen, annars tillhör kunden den utländska gruppen.
För att göra denna rapport använder du den enkla CASE
uttryck i SELECT
uttalande enligt följande:
SELECT customerid,
firstname,
lastname,
CASE country
WHEN 'USA'
THEN 'Domestic'
ELSE 'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName,
FirstName;
Code language: SQL (Structured Query Language) (sql)
Prova det
SQLite sökte efter CASE
uttryck
Det sökta CASE
expression utvärderar en lista med uttryck för att avgöra resultatet. Observera att det enkla CASE
uttryck jämför bara för likhet, medan den sökta CASE
uttryck kan använda alla former av jämförelse.
Följande illustrerar syntaxen för den sökta CASE
uttryck.
CASE
WHEN bool_expression_1 THEN result_1
WHEN bool_expression_2 THEN result_2
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
Det sökta CASE
expression utvärderar de booleska uttrycken i den angivna sekvensen och returnerar motsvarande resultat om uttrycket utvärderas till sant.
Om inget uttryck evalueras till sant, sökte CASE
expression returnerar uttrycket i ELSE
klausul om specificerad. Om du utelämnar ELSE
sats, den sökta CASE
uttryck returnerar NULL
.
Liknar det enkla CASE
expression, den sökta CASE
expression stoppar utvärderingen när ett villkor är uppfyllt.
Sökte i CASE
exempel
Vi kommer att använda tracks
tabell för demonstrationen.
Anta att du vill klassificera spåren baserat på dess längd, till exempel mindre en minut, spåret är kort; mellan 1 och 5 minuter är spåret medium; mer än 5 minuter är spåret långt.
För att uppnå detta använder du den sökta CASE
uttryck enligt följande:
SELECT
trackid,
name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
ELSE
'long'
END category
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Prova det
I den här handledningen har du lärt dig om SQLite CASE
uttryck för att bilda villkorlig logik inuti en SQL-fråga.