Oversigt: i denne øvelse vil du lære om SQLite CASE
udtryk for at tilføje den betingede logik til en forespørgsel.
SQLite CASE
udtryk evaluerer en liste over betingelser og returnerer et udtryk baseret på resultatet af evalueringen.
CASE
udtryk ligner IF-THEN-ELSE
erklæring på andre programmeringssprog.
Du kan bruge CASE
udtryk i enhver sætning eller sætning, der accepterer et gyldigt udtryk. For eksempel kan du bruge CASE
udtryk i klausuler såsom WHERE
, ORDER BY
, HAVING
, SELECT
og udsagn såsom SELECT
, UPDATE
og DELETE
.
SQLite giver to former for CASE
udtryk:simpel CASE
og søgte i CASE
.
SQLite simpel CASE
udtryk
Den simple CASE
udtryk sammenligner et udtryk med en liste af udtryk for at returnere resultatet. Det følgende illustrerer syntaksen for den simple CASE
udtryk.
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)
Den simple CASE
udtryk sammenligner case_expression
til udtrykket vises i den første WHEN
klausul, when_expression_1
, for ligestilling.
Hvis case_expression
er lig med when_expression_1
, den simple CASE
returnerer udtrykket i den tilsvarende THEN
klausul, som er result_1
.
Ellers den simple CASE
udtryk sammenligner case_expression
med udtrykket i den næste WHEN
klausul.
I tilfælde af ingen case_expression
matcher when_expression
, CASE
udtryk returnerer result_else
i ELSE
klausul. Hvis du udelader ELSE
klausulen, CASE
udtryk returnerer NULL.
Den simple CASE
udtryk bruger kortslutningsevaluering. Med andre ord returnerer den resultatet og holder op med at evaluere andre forhold, så snart den finder et match.
Simpel CASE
eksempel
Lad os tage et kig på customers
tabel i eksempeldatabasen.
Antag, at du skal lave en rapport over kundegrupperne med den logik, at hvis en kunde befinder sig i USA, tilhører denne kunde den indenlandske gruppe, ellers tilhører kunden den udenlandske gruppe.
For at lave denne rapport bruger du den simple CASE
udtryk i SELECT
erklæring som følger:
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)
Prøv det
SQLite søgte i CASE
udtryk
Den søgte CASE
udtryk evaluerer en liste over udtryk for at bestemme resultatet. Bemærk, at den simple CASE
udtryk sammenligner kun for lighed, mens den søgte CASE
udtryk kan bruge enhver form for sammenligning.
Det følgende illustrerer syntaksen for den søgte CASE
udtryk.
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)
Den søgte CASE
udtryk evaluerer de boolske udtryk i den angivne sekvens og returnerer det tilsvarende resultat, hvis udtrykket evalueres til sandt.
Hvis intet udtryk vurderes til at være sandt, vil den søgte CASE
udtryk returnerer udtrykket i ELSE
klausul hvis specificeret. Hvis du udelader ELSE
klausul, den søgte CASE
udtryk returnerer NULL
.
Svarende til den simple CASE
udtryk, den søgte CASE
udtryk stopper evalueringen, når en betingelse er opfyldt.
Søgte i CASE
eksempel
Vi vil bruge tracks
bord til demonstrationen.
Antag, at du vil klassificere sporene baseret på deres længde, f.eks. mindre et minut, sporet er kort; mellem 1 og 5 minutter er sporet medium; mere end 5 minutter, sporet er langt.
For at opnå dette, bruger du den søgte CASE
udtryk som følger:
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)
Prøv det
I dette selvstudie har du lært om SQLite CASE
udtryk for at danne betinget logik inde i en SQL-forespørgsel.